Method for changing a target array, a method for analyzing a structure, and an apparatus, a storage medium and a transmission medium therefor

ABSTRACT

The objective of the present invention is the efficient analyzation of the structure of an array. 
     By performing the prev(S) calculation for a character string S, if in the character string S a like variable is present upstream of a second variable, the second variable is changed to a numerical value that indicates the distance to the upstream like variable. But if in the character string S a like variable is not present upstream of a variable, that variable is changed to “0” to obtain a character string S 1.  Further, by performing the compl(S) calculation for the a character string S, if in the character string S a complementary variable is present upstream of a second variable, the second variable is changed to a numerical value that indicates the distance to the complementary variable. But if in the character string S a complementary variable is not present upstream of a variable, that variable is changed to “0” to obtain a character string S 2  ( 102 ). A single suffix tree (structure suffix tree) is generated by regarding the character strings S 1  and S 2  as a pair of corresponding character strings ( 104  to  114 ), and the obtained structure suffix tree is employed to analyze the structure of the array that is represented by the character string S.

BACKGROUND OF THE INVENTION

1. Technical Field

The present invention relates to a method for changing an array, and amethod, an apparatus, a storage medium and a transmission medium foranalyzing a structure. In particular, the present invention relates to amethod for changing an array in order to analyze its structure, a methodfor employing the array changing method to perform the analyzation ofthe structure of the array, an array structure analyzation apparatusspecifically provided for the employment of the array structureanalyzation method, a storage medium on which is stored a program thatpermits a computer to implement and apply the array structureanalyzation method, and a transmission medium for transmitting theprogram that permits a computer to implement and apply the arraystructure analyzation method.

2. Prior Art

Recently, the deciphering of genetic information has been completed fora variety of organisms other than human beings, and it is nowanticipated that the same process of explication can be performed forthe human genome. For DNA, which is the main component of chromosomesand which is represented by an array of four bases consisting of adenine(A), thymine (T), cytosine (C) and guanine (G), and for RNA, which istranscribed from DNA and which is represented by an array of four bases,in which the T in DNA is replaced by uracil (U), the analyzation of thegenetic information is performed by replacing an array of the bases of asingle standard DNA or RNA base array with a character string forconvenience, extracting from the obtained character string the patternof a character string that frequently appears, and analyzing theextraction results. Conventionally, as a technique, a suffix tree (adata structure) is well known that is effective for performing a rapidsearch of character strings to extract a character string that appearsfrequently, or a character string that is common to two or morecharacter strings. The suffix tree represents all the suffixes in acharacter string wherein the character “$,” which does not exist in astring that is currently being processed, is added at the end of thepertinent character string. An example is the character string“mississippi$” that, as is shown in FIG. 7, is obtained by adding thecharacter “$” at the end of “mississippi,” the character string that iscurrently being processed.

As is shown in FIG. 7, a label that corresponds to the character stringis provided for each edge of the suffix tree. The first character ofeach label that is provided for each outgoing edge of one node(including a root node) differs from the others, and the edges aresorted in accordance with the first characters of the labels (forexample, in FIG. 7, the edges are arranged in the English alphabeticorder from left to right). In the suffix tree, the array of the labelsthat are provided for the individual edges from the root node to aspecific leaf node (a node at the distal end of an edge to which noother edge is connected) is used as a suffix that corresponds to thespecific leaf node (for example, “issippi$” is the suffix thatcorresponds to the leaf node of the array extending from the edges withlabels “ppi$,” “ssi” and “i” to the root node, and “ssissippi$” is thesuffix that corresponds to the leaf node of the array extending from theedges with labels “ssippi$,” “si” and “s” to the root node.

An algorithm is well known whereby the data structure of a suffix treecan be constructed within the time that corresponds to O(n Log s) wheren denotes the length (character count) of the original character string,and s denotes the number of types of alphabetic characters that form theoriginal character string). In particular, when the alphabet is aninteger alphabet (numerals from 1 to n), the data structure of a suffixtree can be constructed within the time that corresponds to O(n).Therefore, even when a target character string is enormously long, likea character string that represents a DNA or an RNA base array, the datastructure of a suffix tree for the pertinent character string can becompleted within a short period of time (more specifically, a lineartime relative to the length of the original character string). Further,if the suffix tree is employed, a character string having a length(character count) m can be found in the target character string within atime that corresponds to O(m log s), so that a character string used incommon or a frequently appearing character string can be listed within ashort period of time (a linear time relative to the length of theoriginal character string).

In addition, when the label provided for each edge is replaced withinformation that represents the locations of the first character and thelast character (character preceding “$”) of the label in the originalcharacter string (e.g., “mississippi$” is replaced with [111]), thelength of the character string that represents the suffix tree can befitted to the constant times for the length of the original characterstring. The suffix array is also well known as a technique by which thelength of the character string that represents a suffix tree can bereduced.

As was previously described, leaf nodes of a suffix tree correspondrespectively to the suffixes of an original string. When the individualsuffixes are arranged beginning with the suffix that corresponds to theleaf node at one end of the suffix tree (the left end in FIG. 7), anarray wherein all the suffixes of an original string are arranged indictionary order is obtained. When the suffixes that are elements of thearray are replaced with data that represent the locations of the firstcharacters of the suffixes in the original string (e.g., “ippi$” isreplaced with “8”), an array (called a suffix array) having the samelength as the original character string is obtained. For example, thesuffix array for “mississippi” in FIG. 7 is “8 5 2 11 1 10 9 7 4 6 3.”

When the above suffix array is employed, the memory capacity requiredfor a search for a character string can be reduced compared with when asuffix tree is employed. However, the time required for searching forthe character string is O(m log n), where n denotes the length of atarget character string and m denotes the length of a character stringthat is to be searched for.

A parameterized suffix tree is also well known as a technique (a datastructure) for searching for a character string that frequently appearsor a character string used in common when the character string includesa variable. For a gene sequence, such as a DNA or RNA base array, aspecific element in the array may be exchanged with another specificelement (for example, the A and T or the G and C of DNA complement eachother and can be exchanged). Thus, in a parameterized suffix tree, whenreplaceable elements of an array are employed as variables, and when byreplacing these variables in character strings (the character stringsthat include the variables) the character strings can be altered so thatthey are the same, the character strings are regarded as being the same.

For example, when x, y and z are defined as variables and a, b and c aredefined as fixed characters, “axbycxaza” and “azbxczaya” are regarded asbeing the same character string (called a p-string (ParameterizedString)) because by exchanging the variables x, y and z the samecharacter array can be obtained. Encoding that is expressed as prev( )is used to detect a p-string. This encoding is used to replace variablesin a character string with a numerical value (the first variable thatappears is 0) that represents the distance from the same variable thatappeared immediately before. When the encoding prev( ) is performed forthe two previously mentioned character strings,prev(axbycxaza)=prev(azbxczaya)=a0b0c4a0a is obtained.

The parameterized suffix tree represents the result that is obtained byperforming the prev( ) encoding for all the suffixes of a characterstring to which the character $, which is not present in a targetcharacter string, is added (this differs from a normal suffix tree thatis prepared while an array obtained by performing the prev( ) encoding,for a character string to which the character $ has been added, isregarded as a normal character string). In a parameterized suffix tree,as well as a suffix tree, leaf nodes correspond to the respectivesuffixes. Each edge has a label that corresponds to a partial characterstring, and the arrangement of labels that are provided for edges fromthe root node to a specific leaf node represents the result obtained bythe prev( ) encoding for a suffix that corresponds to the specific leafnode.

Further, in the same manner as for the suffix tree, the first characterof each label, which is provided for each edge extending from a node(including the root node), differs the others, and the labels are sortedin accordance with the first character. In addition, since the labels ofeach of the individual edges are represented by the first and the lastpositions of the original character string, the data structure has thesize of the constant times of length of the character string.

For a gene sequence, such as a DNA or RNA base array, it is well knownthat although arrays that have the same structure may have differentappearances they tend to have the same functions or properties. For aDNA base array, for example, when either or both of the complementary Aand T, and the complementary G and C components are exchanged with eachother, or when the non-complementary A and C components are exchangedand the non-complementary T and G components are exchanged, thestructure of the array (the relationship of the elements of the array)tends to be unchanged, even though the array differs from the originalarray, and the functions and the properties obtained by effecting theexchange tend to be similar to those of the original array. Therefore,when analyzing a gene sequence, it is extremely important that arrayshaving the same structure be defined as the same array, regardless ofwhether the array themselves are identical, and that a frequentlyappearing array be extracted or that a partial array commonly includedin two arrays be searched for.

On the other hand, with the conventional technique for employing asuffix tree or a suffix array, a character string other than anidentical one can not be defined as being the same character string, sothat even though an array may have the same structure, if it has adifferent element arrangement it can not be treated as the same array.Further, in a parameterized suffix tree, a character string whereinvariables are simply replaced is defined as being the same characterstring. Thus, when, for example, only A and C are exchanged in the DNAbase array, or only T and G are exchanged, or when A is exchanged with Cand T with A, an array having a different structure from the originalarray can not be distinguished from an array having the same structureas the original array. Therefore, even when any of the aboveconventional techniques is employed, it is difficult to efficientlyanalyze a gene sequence.

To resolve the above shortcomings, it is one object of the presentinvention to provide a method for changing an array in order toefficiently analyze the structure of the array.

It is another object of the present invention to provide a method, anapparatus, a storage medium and a transmission medium for efficientlyanalyzing the structure of an array.

SUMMARY OF THE INVENTION

To achieve the above objects, according to the present invention, amethod for changing an array comprises the steps of: changing a variablein a target array to information that represents the location of adifferent variable when the target array, consisting of a combination ofa plurality of various kinds of elements (all of the elements may bevariables that can be replaced by other elements, or elements other thanthe variables may be included) is viewed along a path extending in apredetermined direction (e.g., a path extending from either end of thetarget array to the other end), and when a different, complementaryvariable is present upstream of a variable included in the target array;changing the variable to information indicating that no different,complementary variable is present when no different, complementaryvariable is present upstream of the variable in the target array; andrepeating the steps for all the other variables included in the targetarray.

Through the change, the complementary variables in the array are alteredto provide information that represents the positional relationships ofthe variables (information indicating the presence/absence of thevariables as well as their locations). Thus, from an array that has aplurality of complementary variable pairs, the array changing method ofthe present invention produces an equivalent array (i.e., the structureof the array (the relationships of the elements of the array) is thesame, even though the array itself is different) by exchanging certainof the variables in the different complementary variable pairs.

As an example, when the variable x and the variable z are complementary,and the variable y and the variable w are complementary, the arraychanging method of the invention (hereinafter referred to as compl( ))is used to change the array (ABxByAzwz) as follows:

compl(ABxByAzwz)=AB0B0A436.

The “0”s in the obtained array indicate that complementary variables arenot present upstream, and the “4,” the “3” and the “6” are used torepresent distances to those complementary variables that are presentupstream.

The array changing method of the present invention is employed to (1)change an array (ABzByAxwx) wherein only the complementary variables xand z are exchanged, (2) change an array (ABxBwAzyz) wherein only thecomplementary variables y and w are exchanged, and (3) change an array(ABwBzAyxy) wherein the variables x and w that are not complementary andthe variables y and z that are not complementary are exchanged, so thatall of the arrays have the same structure as the original array. Theobtained arrays are:

(1) compl(ABzByAxwx)=AB0B0A436(2) compl(ABxBwAzyz)=AB0B0A436(3) compl(ABwBzAyxy)=AB0B0A436and are equivalent to the original array.

The array changing method of the present invention is employed to changean array (ABwByAzxz) wherein only the variables x and w that are notcomplementary are exchanged, which provides an array that has astructure different from that of the original array. The obtained arrayis

compl(ABwByAzxz)=AB0B2A011and thus is different from the original array.

As is apparent from above, when one pair of arrays are changed using thearray changing method of the invention, the resultant arrays can becompared to efficiently determine whether the structures of the arraypairs are identical, or to determine whether a sequence having the samestructure is included in both the arrays. When a specific array ischanged using the method of the invention, the resultant array can alsobe employed to easily extract a sequence having the same structure thatappears frequently in the array. Therefore, according to the arraychanging method of the invention, the structure of an array can bechanged so that an efficient analyzation of the structure of the arraycan be performed.

According to the array changing method of the invention, arrays havingthe same structure can be changed to equivalent arrays; however,although very rare, there are exceptional cases in which arrays havingdifferent structures are changed into equivalent arrays. For example, inthe DNA base array, the array (TTAA) and the array (AGCC), which differin structure, are changed by the array changing method of the invention.The resultant arrays are

compl(TTAA)=compl(AGCC)=(0012),which are equivalent.

According to the present invention, a method for analyzing the structureof an array comprises the steps of: changing a variable that is includedin a target array consisting of a combination of a plurality ofdifferent kinds of elements and that is replaceable with another elementinto information representing the location of the same variable when thetarget array is viewed along a path extending in a predetermineddirection, and when the same variable is present upstream of thevariable; and changing, when the same variable is not present upstreamof the replaceable variable in the target array, all the variables inthe target array into information indicating that the same variable isnot present, and thus changing the target array into a first array.

By changing the target array to a first array, the variables in thetarget array are converted to data (data that represent thepresence/absence of the same variable and its location) that representsthe positional relationship of the same variable in the array. Thus, onepair of arrays that have different structures but are changed toequivalent arrays by the method of the invention can be changed as firstarrays that differ from each other. For example, the arrays (TTAA) and(AGCC), which are to be changed to equivalent arrays by the arraychanging method of the invention, are changed to the following firstarrays that differ from each other:

prev(TTAA)=(0101) prev(AGCC)=(0001)The “0”s in the obtained first array indicate that the same variablesare not present upstream, and the “1”s represent distances to the samevariables that are present upstream.

According to the method for analyzing the structure of an array, in theabove manner, the target array is changed to the first array and is alsochanged to a second array by the array changing method of the presentinvention, and the first and the second arrays are employed to analyzethe structure of the target array. Thus, the array for which the firstand the second arrays obtained by the process are equivalent isdetermined to be the same array, so that the array having a differentstructure can be excluded and only the array having the same structurecan be precisely identified. As a result, the structure of the array canbe efficiently analyzed.

Various analyzation methods are available for employing the first andthe second arrays to analyze the structure of the array. As an examplemethod, a suffix tree is prepared by using the first and the secondarrays and is employed to analyze the structure of the array. Thismethod is preferable because the process can be completed within ashorter time than can the other analyzation methods. To prepare thesuffix tree, for example, in an operation to prepare a single suffixtree the first and the second arrays are regarded as a single pair ofcorresponding character strings. Then, from among sequences of the firstand the second arrays, which are provided as labels for individual edgesof the single suffix tree, information that indicates the location ofthe same variable or the different variable that is not present in eachof the sequences is replaced with information that indicates the absenceof the same variable or the different variable.

The target array is changed to the first and the second arrays by using,as information that indicates the position of the same variable in thefirst array and the position of a different variable in the secondarray, numerical information that represents the number of elementsarranged in the target array beginning at the position of a targetvariable and continuing up to the position of same variable, or adifferent variable. In this process, if it is ascertained that, when onepair of arrays are changed to the first and the second arrays, one(array A) of the first and the second arrays matches, and that in theother array (array B), numerical information that is located at aposition corresponding to the information indicating that, at the least,the different variable or the same variable in the array A is notpresent, it is ascertained that the array B obtained from the array pairalso matches and that the pair of arrays have the same structure.

For the first and the second thus obtained arrays, all of theinformation indicating that the different variable or the same variableis not present in the target array is replaced with numericalinformation, obtained by inverting the positive and negative signs ofthe numerical information, indicating the number of elements that arepresent in another array at locations corresponding to the information.Then, by regarding the obtained array as a character string, a suffixtree is prepared as follows. Among the sequences of the obtained arraythat are provided as labels for edges of the suffix tree, numericalinformation indicating the positioning of the same variable or thedifferent variable that is not present in each of the sequences isreplaced with information indicating that the same variable or thedifferent variable is not present.

When the suffix tree prepared in the above described manner is employed,it is extremely easy to extract a sequence that has the same structureand that frequently appears in the target array, which is one type ofprocess used for the analyzation of the structure of the target array.

Further, when searching for a common sequence in a first target arrayand a second target array, which is one type of process used for theanalyzation of the structure of a target array, a suffix tree isprepared by using, as the target array (an array for which suffixes areto be prepared), an array wherein the first target array, firstidentification information, the second target array and secondidentification information are arranged in order. Then, when the thusprepared suffix tree is employed, it is extremely easy to search for thecommon sequence.

The suffix tree employs a tree structure to represent all the suffixesthat are present in a character string when the character string isviewed along a path extending in a specific direction. The suffix in thecharacter string is a prefix as viewed from the opposite direction.While taking into account the analyzation of the structure of the array,a prefix tree that employs a tree structure to represent all theprefixes in the character string is also logically equivalent to thesuffix tree. Therefore, instead of the suffix tree, the prefix tree maybe employed for this invention.

According to the present invention, an apparatus for analyzing thestructure of an array comprises: first conversion means for changing atarget array into a first array by converting, in the target array, avariable that is replaceable by another element into informationindicating the position of the same variable or information indicatingthe absence of the same variable; second conversion means for changingthe target array into a second array by converting, in the target array,a variable that is replaceable by another element into informationindicating the position of a different, complementary variable, orinformation indicating the absence of the different, complementaryvariable; and analyzation means for employing the first and the secondarrays to analyze the structure of the target array. With thisapparatus, as well as by applying the method of the invention foranalyzing the structure of the array, the structure of the array can beefficiently analyzed.

According to the present invention, a storage medium is provided onwhich is stored a program that permits a computer to implement themethod of the invention to analyze the structure of an array, i.e., thatpermits a computer to perform the processing comprising: a first step ofchanging a target array into a first array by converting, in the targetarray, a variable that is replaceable by another element intoinformation indicating the position of the same variable or informationindicating the absence of the same variable; a second step of changingthe target array into a second array by converting, in the target array,a variable that is replaceable by another element into informationindicating the position of a different, complementary variable, orinformation indicating the absence of the different, complementaryvariable; and a third step of employing the first and the second arraysto analyze the structure of the target array. With this apparatus, aswell as by applying the method of the invention for analyzing thestructure of the array, the structure of the array can be efficientlyanalyzed. Since the computer reads the program from the storage mediumand executes it, the structure of the array can be efficiently analyzedin the same manner as in the method of the invention used for analyzingthe structure of the array.

According to the present invention, a transmission medium is providedfor transmitting a program that permits a computer to perform the methodof the invention by analyzing the structure of an array, i.e., a programthat permits a computer to perform the processing comprising: a firststep of changing a target array into a first array by converting, in thetarget array, a variable that is replaceable by another element intoinformation indicating the position of the same variable or informationindicating the absence of the same variable; a second step of changingthe target array into a second array by converting, in the target array,a variable that is replaceable by another element into informationindicating the position of a different, complementary variable, orinformation indicating the absence of the different, complementaryvariable; and a third step of employing the first and the second arraysto analyze the structure of the target array. With this apparatus, aswell as by applying the method of the invention for analyzing thestructure of the array, the structure of the array can be efficientlyanalyzed. Therefore, when the computer uses storage means to temporarilystore the program received from the transmission medium, and then readsthe program from the storage means and executes it, the structure of thearray can be efficiently analyzed in the same manner as it is when themethod of the invention is used that is specifically provided for theanalyzation of the array structure.

BRIEF DESCRIPTION OF THE DRAWINGS

Preferred embodiments of the present invention will now be described, byway of example only, with reference to the accompanying drawings inwhich:

FIG. 1 is a schematic block diagram illustrating the arrangement of acomputer system according to one embodiment of the present invention.

FIG. 2 is a flowchart showing the structure suffix tree generationprocessing according to the embodiment of the present invention.

FIG. 3 is a flowchart showing the prev ( ) calculation processing.

FIG. 4 is a flowchart showing the compl ( ) calculation processing.

FIG. 5 is a flowchart showing the structure suffix tree generationprocessing.

FIGS. 6A to 6H are conceptual diagrams showing example processing forpreparing a structure suffix tree according to the embodiment.

FIG. 7 is a conceptual diagram showing an example suffix tree.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS OF THE INVENTION

The preferred embodiment of the present invention will now be describedin detail while referring to the drawings.

FIG. 1 is a specific diagram illustrating, for each sub-system, thehardware arrangement of a computer system 10 comprising a personalcomputer (PC) that is appropriate for the present invention. An examplePC for carrying out the present invention is either a notebook or adesktop PC that conforms to the OADG (PC Open Architecture Developer'sGroup) specifications, and on which is mounted, as an operating system(OS), “Windows98” or “NT,” by Microsoft Corp., or “OS/2,” by IBM. Theindividual sections of the computer system 10 will now be described.

A CPU 14, which is the brain of the entire computer system 10, executesvarious programs under the control of the OS. The CPU 14 may, forexample, be a “Pentium,” “MMX technology Pentium” or “Pentium Pro” byIntel Corp., a “Power PC” by IBM, or a CPU by another maker, such as AMDCorp. The CPU 14 includes an L2 (level 2)-cache, which is fast operatingmemory, for temporarily storing very limited code or data that arefrequently accessed so as to reduce the total time required to access amain memory 16. The L2-cache is generally constituted by an SRAM (StaticRAM) chip that has a memory capacity of at least 512 kB.

The CPU 14 is connected to the individual hardware components, whichwill be described later, via three bus layers, including: an FSB 18,which is a processor bus directly connected to the external pin of theCPU 14; a PCI (Peripheral Component Interconnect) bus 20, which is afast I/O bus; and an I/O bus 22, which is an ISA (Industry StandardArchitecture) bus for low speed I/O.

The FSB 18 and the PCI bus 20 are generally connected by a bridgecircuit (host-PCI bridge) that is called a memory/PCI control chip 24.In this embodiment, the memory/PCI control chip 24 includes a memorycontroller function for controlling the access to the main memory 16 anda data buffer for absorbing the difference in data transmission speedsbetween the FSB 18 and the PCI bus 20. A 440EX or a 440GX by Intel Corp.can be employed as the memory/PCI control ship 24.

The main memory 16 is a writable area that is used as a reading area fora program for the CPU 14, or as a work area for writing data processedby the program. The main memory 16 is generally constituted by aplurality of DRAM (Dynamic RAM) chips. As a standard, 32 MB of memory ismounted, but this can be expanded to 256 MB. Recently, in order torespond to requests for high-speed processing, DRAM has been exchangedfor fast page DRAM, EDO DRAM, synchronous DRAM (SDRAM), burst EDO DRAM,or RDRAM.

The programs herein include firmware, such as the OS, represented byWindows98, various device drivers for operating peripheral devices,application programs for specific jobs, and a BIOS (a Basic Input/OutputSystem: a program for controlling the input/output operation of hardwarecomponents, such as keyboards and floppy disk drives) that is stored ina flash ROM 56 (which will be described in detail later).

The PCI bus 20 is a bus for comparatively rapid data transmission (e.g.,a bus width of 32/64 bits, with a maximum operating frequency of33/66/100 MHz and a maximum data transmission speed of 132/264 MBps).The PCI bus 20 is connected to a PCI device, such as a card buscontroller 30, that is driven at a comparatively high speed. It shouldbe noted that the PCI architecture originally was advocated by IntelCorp., and that a so-called PnP (Plug and Play) function is provided andemployed.

A video sub-system 26, which includes a video controller, performs avideo associated function. Actually, the video controller handlesdrawing commands received from the CPU 14, temporarily writes obtaineddrawing data in a video memory (VRAM), and reads the drawing data fromthe VRAM and outputs it to a liquid crystal display (LCD). The videocontroller also employs an attached digital-analog converter (DAC) toconvert digital video signals to analog video signals. The analog videosignals are output via a signal line to a CRT port (not shown).

The PCI bus 20 is also connected to the card bus controller 30, an audiosub-system 32 and a modem sub-system 34. The card bus controller 30 is aspecial controller for directly transmitting a bus signal carried by thePCI bus 20 to the interface connector (card bus) of a PCI card bus slot36. The card bus slot 36 is formed, for example, in the wall of the mainbody of the PC, and a PC card (not shown) that conforms to the standards(e.g., “PC Card Standard 95”) determined by the PCMCIA (PersonalComputer Memory Association)/JEIDA (Japan Electronic IndustryDevelopment Association) is loaded into the card bus slot 36.

Connected to the modem sub-system 34 is a communication line, such as aLAN line or a telephone line, that can be used to connect the computersystem 10 to the Internet.

The PCI bus 20 and the I/O bus 22 are interconnected by amulti-functional PCI device 38. The multi-functional PCI device 38includes a function for bridging the PCI bus 20 and the I/O bus 22, aDMA controller function, a programmable interrupt controller (PIC)function, a programmable interval timer (PIT) function, an IDE(Integrated Drive Electronics) interface function, a USB (UniversalSerial Bus) function and an SMB (System Management bus) interfacefunction. A PIIX4, for example, by Intel Corp. can be used as themulti-functional PCI device 38.

The DMA controller function transmits data between a peripheral device(e.g., an FDD) and the main memory 16, without the CPU 14 beingrequired. The PIC function executes a predetermined program (aninterrupt handler) in response to an interrupt request (IRQ) receivedfrom a peripheral device. And the PIT function, which has a programmablegeneration cycle, generates a timer signal each predetermined cycle.

An IDE interface, which is implemented by the IDE interface function, isused to connect to an IDE hard disk drive (HDD) 40, and ATAPI (ATAttachment Packet Interface) is used to connect an IDE CD-ROM drive 42,or may instead be used to connect another type of IDE device, such as aDVD (a Digital Video Disc or a Digital Versatile Disc) drive. Externaldevices, such as the HDD 40 and the CD-ROM drive 42, are stored inlocations called “media bays” or “device bays.” The external storagedevices that are mounted as standard may be so provided that they can orcan not be replaced by other devices, such as FDDs or battery packs.

The main memory 16 corresponds to a main storage device for the presentinvention, and the HDD 40 corresponds to a secondary storage device forthe present invention.

A USB port is provided for the multi-functional PCI device 38, and isconnected to a USB connector 44 that is provided, for example, on thewall of the PC main body. The USB supports a function (a hot pluggingfunction) for the insertion and removal of peripheral devices (USBdevices) while the power is on, and a function (a plug and playfunction) for automatically recognizing a newly connected peripheraldevice and for resetting the system configuration. A maximum of 63 USBdevices can be daisy-chain connected to one USB port. Example USBdevices are a keyboard, a mouse, a joy stick, a scanner, a printer, amodem, a display monitor and a tablet.

In addition, an EEPROM (not shown) is connected via an SM bus to themulti-functional PCI device 38. The EEPROM is a nonvolatile,electrically rewritable memory for storing information, such as apassword that is registered by a user, a supervisor password and aproduct serial number.

The I/O bus 22 has a lower data transmission speed than the PCI bus 20(e.g., a bus width of 16 bits and a maximum data transmission speed of 4MBps). Connected to the I/O bus 22 are a Super I/O controller 46, apower controller 48, the flash memory 56 consisting of an EEPROM, CMOSRAM 58, and a peripheral device (not shown) such as a real time clock(RTC) or a keyboard/mouse controller that is operated at a comparativelylow speed.

Connected to the Super I/O controller 46 is an I/O port 52 that servesas a peripheral controller for driving a floppy disk drive (FDD), forcontrolling the input/output (PIO) of parallel data via a parallelconnection and the input/output (SIO) of serial data via a serialconnection.

The power controller 48 is mainly used to control the power managementor the thermal management of the computer system 10, and can beconstituted by a single-chip micro computer that includes an MPU, a RAM,a ROM and a timer. In the ROM are stored a program and a reference tablethat are required to execute the power management and the thermalmanagement functions. The power controller 48, which is connected to apower supply controller 54, includes a charger for charging a batteryand a DC/DC converter for generating a constant DC voltage, such as 5 Vor 3.3 V, that is used by the computer system 10. The supply of power bythe controller 54 is controlled by the power controller 48.

The flash ROM 56 is composed of nonvolatile memory used to store afirmware program, such as the BIOS or boot strap code, and the contentsstored therein can be electrically rewritten. The CMOS RAM 58, which isprovided by connecting a semiconductor memory to a backup power source,functions as nonvolatile, fast storage means.

Many electric circuits in addition to those in FIG. 1 are required toconstitute the computer system 10. However, since these are well knownto one having ordinary skill in the art, and since those electriccircuits are not directly related to the subject of the invention, nofurther explanation will be given for them in this specification.Furthermore, to avoid complexity in the drawings, only a part of theconnections for the hardware blocks in FIG. 1 are shown.

The processing for the invention will now be described. A method forchanging an array and a method for analyzing the structure of an arrayof the present invention will be implemented by a program for analyzingthe structure of an array. Several methods are used to install thestructure analyzation program into the computer system 10. For example,to install the structure analyzation program a setup program, along withthe structure analyzation program, is stored on a data storage medium 60(see FIG. 1), such as a floppy disk. The data storage medium 60 isinserted into an FDD that is connected to an I/O port 52 in the computersystem 10, and an instruction is issued to the CPU 14 to execute thesetup program. Following this, the structure analyzation program isinstalled by being sequentially read from the data storage medium 60 andwritten on the HDD 40.

When an instruction for the generation of a suffix tree is issued to acomputer system 10 that has been powered on and is ready to operate, theCPU 14 reads the structure analyzation program from the HDD 40 andexecutes it. Thus, the computer system 10 functions as an apparatusaccording to the present invention for analyzing the structure of anarray. As is apparent from the above description, the data storagemedium 60 corresponds to a storage medium according to the presentinvention.

While referring to the flowchart in FIG. 2, an explanation will be givenfor the suffix tree generation processing performed when the CPU 14executes a suffix tree generation program, which is one part of thestructure analyzation program.

At step 100 a character string S (a target array) to be processed (to beanalyzed) is fetched. The target character string S can be a characterstring that represents a single-stranded DNA base array by replacing thefour bases (adenine, thymine, cytosine and guanine) with fourcharacters, “A,” “T,” “C” and “G” respectively, or a character stringthat represents an RNA base array by replacing four bases (adenine,uracil, cytosine and guanine) with characters “A,” “U,” “C” and “G”. Anend identification character (a character, such as “$,” that is notpresent in a character string) that is used to identify a characterstring end, is added to the character string S that is fetched at step100.

Hereinafter, the i-th character of the character string S is denoted byS[i], a character string part that begins with the j-th character of thecharacter string S and ends with i-th character is denoted by S[j . . .i], and the length of the character string S (the character count) isdenoted by n (i.e., S[l . . . n]=the character string S).

At step 102, the character string S is changed to a first characterstring S1 in accordance with a changing condition prev( ) (prev(S)=S1),and is also changed to a second character string S2 in accordance with achanging condition compl( ). The conversion of the character string Sinto the first character string S1 can be performed by the prev( )calculation process in FIG. 3, for example. The prev( ) calculationprocess corresponds to the conversion to the first array for which thestructure analyzation method is used. This process will now bedescribed.

At step 130, “0”s are set for character position registers X₁, X₂, . . .. The character position registers are provided in a number equivalentto the types of variables that are included in the character string S(variables here are characters that are replaceable with othercharacters (variables) during the analyzation of the structure of thecharacter string S: e.g., “A,” “T,” “C” and “G” for the character stringthat represents the single-stranded DNA base array, and “A,” “U.” “C”and “G” for the character string that represents the RNA base array.) Atstep 132, “1” is substituted into a counter i.

At step 134, the i-th character S[i] is extracted from the characterstring S, and at step 136, a check is performed to determine whether thecharacter S[i] is a variable. When it is determined that the characterS[i] is not a variable (for example, when the character string Srepresents the DNA or RNA base array and the character S[i] is an endidentification character, or when the character string S also includescharacters other than variables and the character S[i] represents anentry other than a variable), program control is shifted to step 138.The character S[i] is stored as the i-th character of the firstcharacter string S, and program control is shifted to step 150.

When the character S[i] is a variable, the decision at step 136 isaffirmative, and program control advances to step 140, whereat avariable type a of the character (variable) S[i] is examined. At step142, a check is performed to determine whether a numerical value of “0”has been set for a character position register Xα that corresponds tothe variable type α of the character (variable) S[i]. When a numericalvalue of “0” has been set for the character position register Xα, it isassumed that the character S[i] is a variable of a variable type α thatappears first, and that the same variable (a variable of the samevariable type α) is not present upstream of the character S[i] in thecharacter string S.

When the decision at step 142 is affirmative, program control is shiftedto step 144. A value of “0” (information indicating that the samevariable is not present upstream of the character S[i] in the characterstring S) is stored as the i-th character of the first character stringS1. Program control is then shifted to step 148. At step 148, the valueof the counter i (information that represents the position of thecharacter S[i] of the character string S) is substituted into thecharacter position register Xα. Therefore, when a variable of thevariable type α appears next, an affirmative decision is obtained atstep 142.

At step 152, a check is performed to determine whether the value of thecounter i matches the length (the character count) n of the characterstring S. When the decision at step 152 is negative, the value of thecounter i is incremented by one. Program control then returns to step134, the next character is extracted as the character S[i], and theprocessing following step 136 is repeated.

When the character S[i] is a variable and a like variable appearedpreviously, the decision at step 136 is affirmative, the decision atstep 142 is negative, and program control advances to step 146. At step146, “i-Xα” is stored as the i-th character of the first characterstring S1, and program control advances to step 148. At this time, sincethe position in the character string S of the variable that appearedpreviously, which is the same as that represented by the character S[i],is stored in the character position register Xα, “i-Xα” constitutesnumerical information that indicates the upstream position, relative tothe character S[i], in the character string S of the previously storedvariable (more specifically, information that indicates the distancefrom the character S[i] to a like variable that appeared previously).

Through the prev( ) calculation process, when upstream in a characterstring S a like variable or like variables are present, a variabledownstream of a like variable that appeared previously is converted intoa numerical value representing the distance to the variable thatappeared previously. When there is no like upstream variable, a variablein the character string S is changed to “0.” Thus, for example, thecharacter string S(AUAUCGU$), which represents an RNA base array, ischanged to the following first character string S1.

prev(AUAUCGU$)=S1=(0022003$)

In addition, the conversion of the target string S into a secondcharacter string S2 can be performed using the compl( ) calculationprocess in FIG. 4. The compl( ) calculation process corresponds to theconversion to the second array by the array changing method and thestructure analyzation method of the present invention. The compl( )calculation process will now be described.

In the compl( ) calculation process, a pair of complementary variablesare determined in advance for a variable included in the characterstring S. For example, for a character string S that represents thesingle-stranded DNA base array, two pairs of complementary variables, Aand T, and C and G, are determined in advance, based on the actualrelationship existing between the individual bases in the DNA basearray. For a character string S that represents the RNA base array, twopairs of complementary variables, A and U, and C and G are determined inadvance based on the actual relationship of the individual bases in theRNA base array.

At step 160, a value “0” is set for the character position registers X₁,X₂, . . . , and at step 162 a value “1” is substituted into the counteri. At step 164, the i-th character S[i] is extracted from the characterS, and at step 166 a check is performed to determine whether thecharacter S[i] is a variable or not. When the decision at step 166 isnegative, program control is shifted to step 168, whereat the characterS[i] is stored as the i-th character of the second character string S2.Program control is then shifted to step 180.

When the character S[i] is a variable, the decision at step 166 isaffirmative, and program control advances to step 170. The variable typea of the character (variable) S[i] is examined, and the variable type β,which is the complementary variable of the variable type α, is examined(in this case, if the character S[i] is “A,” “T,” “C” or “G,”respectively, the type β of “T,” “A,” “G” or “C” is examined). At step172, a check is performed to determine whether a numerical value of “0”has been set for the character position register Xβ for the variabletype β that is the complementary of the character (variable) S[i]. Ifthe character position register Xβhas been set for the numerical valueof “0,” it is assumed that a variable of the variable type β has not yetappeared, and that a different variable (a variable of variable type β),the complementary variable of the character S[i] of the character stringS, is not present upstream of the character S[i].

Therefore, when the decision at step 172 is affirmative, program controlis shifted to step 174. A value of “0” (information indicating that adifferent, complementary variable is not present upstream of thecharacter S[i] in the character string S) is stored as the i-thcharacter of the second character string S2. Program control is thusshifted to step 178. At step 178, the value of the counter i(information indicating the position of the character S[i] of thecharacter S) is substituted into the character position register Xα.Thus, when a variable of a complementary variable type β appears next,the affirmative decision is obtained at step 172.

At step 182, the a check is performed to determine whether the value ofthe counter i matches the length (character count) n of the characterstring S. When the decision is negative, at step 182, the value of thecounter i is incremented by one, and program control returns to step164, whereat the character S[i] is extracted. Thereafter, the processingfollowing step 166 is repeated.

When the character S[i] is a variable and when a different complementaryvariable of the character S[i] appeared previously, the decision at step166 is affirmative, the decision at step 172 is negative, and programcontrol advances to step 176. At step 176, “i-Xβ” is stored as the i-thcharacter of the second character string S2, and program controladvances to step 178. At this time, since the position in the characterstring S of the different complementary variable of the character(variable) S[i] that appeared previously is stored in the characterposition register Xβ, “i-Xβ” is numerical information indicating theposition in the character string S of the different complementaryvariable of the character S[i] that is present upstream of the characterS[i] (more specifically, numerical information that represents thedistance from the character S[i] to the complementary variable thatappeared previously).

Through the above described compl( ) calculation processing, when acomplementary variable or variables are present upstream of variables inthe character string S, all the variables in the character string S arechanged to numerical values, each of which represents the distance to acomplementary variable. However, when a complementary variable is notpresent upstream of a variable, the specific variable is changed to “0.”Thus, for example, the character string S(AUAUCGU$), which representsthe RNA base array, is changed to the following second character stringS2.

compl(AUAUCGU$)=S2=(0111014$)

When the target character string S has been changed to the firstcharacter string S1 and the second character string S2, program controlis shifted to step 104 in the flowchart in FIG. 2. At step 104 and thefollowing steps, the first character string S1 and the second characterstring S2 are regarded as a pair of corresponding character strings, andare employed to generate a single suffix tree (referred to as astructure suffix tree). A label that corresponds to a portion of acharacter string in the first character string S1 and a label thatcorresponds to the second character string S2 are provided for theindividual edges of the structure suffix tree that is generated below.

Further, in the following explanation, label(V) denotes a label string(character string) that is obtained by coupling labels that are providedfor all the edges along the path extending from a node V to a root nodeVroot. V( . . . ) denotes a node having “ . . . ” as a label (label(V)=“. . . ”). V(φ) denotes the root node Vroot, and E( . . . ) denotes anedge between the node V, whereat the character string “ . . . ” is thesuffix for label (V), and the parent node of the node V. f( . . . )denotes a function for replacing the k-th (k is an arbitrary integer)character (numerical value) of character string ( . . . ) with “0” whenthe k-th character is a value equal to or greater than k.

First, at step 104, “1”s are substituted into the counters i and j, andat step 106, the root node Vroot of the structure suffix tree isprepared. At step 108, the root node Vroot is substituted into aparameter s, which is used to point to a node that corresponds to asearch start position whereat, for a search, tracing of the structuresuffix tree is initiated. And φ (empty set) is substituted into atemporary t, for temporarily storing the information, and the root nodeVroot is substituted into an area sL(Vroot), which is used to point to aspecific node.

In the structure suffix tree, the area sL( ) is an area that is providedwhile corresponding to each of the nodes except for the leaf nodes. Inthe area sL(V) of the node V, either information indicating a node W,for which label(W) is a character string obtained by removing the firstcharacter from label(V) (i.e., sL(V)=W), or information indicating aparent node of an edge, wherein the node W seems to be present, is set,which will be described later. Since label(Vroot)=φ, sL(Vroot) b Vrootis defined for the convenience sake.

At step 110, a check is performed to determine whether the value of thecounter i is greater than the character count n of the target characterstring S. When the decision is negative, at step 112 the structuresuffix tree generation process is performed, which will be describedlater. After the structure suffix tree generation process has beenperformed, at step 114 the value of the counter i is incremented by one,and program control returns to step 110. Therefore, during a periodcontinuing until i>n is established, the structure suffix treegeneration process is repeated while the value of the counter i isincremented. The structure suffix tree generation process at step 112will now be described while referring to the flowchart in FIG. 5. Tomake the process easier to understand, (AUAUCGUAUA$) is employed as thetarget character string S (i.e., the first character stringS1=(0022003$) and the second character string S2=(0111014$)). However,in the structure suffix tree generation process, the structure suffixtree for an arbitrary character string can be generated.

At step 200, the structure suffix tree is traced beginning at a node s(the root node Vroot at first) and moving toward a leaf node to searchfor an edge of E(f(S1 [j . . . i−1])) and E(f(S2[j . . . i−1])). SinceS1[j . . . i−1] and S2[j . . . i−1], for example, are both φ when i=j=1,f(S1[j . . . i−1]) and f(S2[j . . . i−1]) are also φ. At this time,since a node other than the root node Vroot and an edge are not presentalong the structure suffix tree, the edge of E(f(S1 [j . . . i−1])) andE(f(S2[j . . . i−1])) is not found.

At step 202, a check is performed to determine whether an edge ofE(f(S1[j . . . i])) and E(f(S2[j . . . i])) is present. When, forexample, i=j=1, and S1=(0022003$) and S2=(0111014$), S1[j . . .i]=S1[1]=(0) and S2[j . . . i]=S2[1]=(0), so that f(S1[j . . . i])=(0)and f(S2[j . . . i])=(0) are obtained. At this time, since a node otherthan the root node Vroot and an edge are not present along the structuresuffix tree, the decision at step 202 is negative. And when the decisionat step 202 is negative, program control advances to step 204 and acheck is performed to determine whether a node of V(f(S1[j . . . i−1]))and V(F(S2[j . . . i−1])) is present. If i=j=1, f(S1[j . . . i−1]) andf(S2[j . . . i−1]) are both φ, as was previously remarked. However,since V(φ) represents Vroot, the decision at step 204 is affirmative,and program control is shifted to step 206. At step 206, “NO” issubstituted into flag node#constructed, and program control isthereafter shifted to step 212.

At step 212, a check is performed to determine whether the temporary tis φ. Since the temporary t is initially set to φ at step 108 (FIG. 2),the decision at step 212 is affirmative, and program control is shiftedto step 218, whereat a check is performed to determine whether the flagnode#constructed indicates “YES.” Since at step 206 “NO” was substitutedinto the flag node#constructed, the decision at step 218 is negative,and program control is shifted to step 220. A node that is designated bythe area sL( ) of the node (the root node Vroot in this case) ofV(f(S1[j . . . i−1])) and V(f(S2[j . . . i−1])) is substituted into theparameter s. Since at step 108 Vroot was substituted into the sL(Vroot),the root node Vroot is substituted into the parameter s. When theprocess at step 200 is performed next, the search is initiated beginningat the node that is stored in the parameter s.

Program control is then shifted from step 220 to step 226. At step 226,a child node is prepared for the node (the root node Vroot in this case)of V(f(S1[j . . . i−1])) and V(f(S2[j . . . i−1])), and labels obtainedby removing f(S1[j . . . i−1]) from f(S1[j . . . ]) and by removingf(S2[j . . . i−1]) from f(S2[j . . . ]) are provided for an edge fromthe prepared child node. Therefore, as is shown in FIG. 6A, the childnode (leaf node) is generated for the root node, and labels that areobtained by removing f(S1[j . . . i−1]) from f(S1[j . . . ]) (sincef(S1[j . . . i−1])=φ, label (0022003$)) and by removing f(S2[j . . .i−1]) from f(S2[j . . . ]) (since f(S2[j . . . i−1])=φ, label(0111014$)) are provided for an edge (edge labeled A).

At step 228, the value of the counter j is incremented by one, and atstep 230, the value of the counter j is greater than the value of thecounter i. Since i (=1)<j (=2), the decision at step 230 is affirmative,and the structure suffix tree generation process is temporarily halted.When the counter i is incremented by one (step 114 in FIG. 2), thestructure suffix tree generation process is resumed under the conditionwherein i=j=2.

Since S1[j . . . i−1] and S2[j . . . i−1] are both φ when i=j=2, f(S1[j. . . i−1]) and f(S2[j . . . i−1]) are both φ and the edge of E(f(S1[j .. . i−1])) and E(f(S2[j . . . i−1])) are φ. Since f(S1[j . . . i])=f(S1[2])=(0) and f(S2[j . . . i])=f(S2[2])=(0), the edge of E(f(S1[j . . .i])) and E(f(S2[j . . . i])) is present (edge A). Therefore, thedecision at step 202 is affirmative, and program control is shifted tostep 232. Then, the parent node (the root node Vroot in this case) ofthe edge of E(f(S1[j . . . i])) and E(f(S2[j . . . i])) is substitutedinto the parameter s. At step 234, a check is performed to determinewhether the temporary t is φ. In this case, the decision at step 234 isaffirmative, and the structure suffix tree generation process istemporarily halted. When the value of the counter i is incremented byone, the structure suffix tree generation process is resumed under thecondition wherein i=3 and j=2.

Since, with i=3 and j=2, f(S1[j . . . i−1])=f(S1[2])=(0) and f(S2[j . .. i−1])=f(S2[2])=(0), at step 200 the edge of E(f(S1[j . . . i−1])) andE(f(S2[j . . . i−1])) is found (edge A). Further, since f(S1[j . . .i])=f(S1[2 . . . 3])=(00) and f(S2[j . . . i])=f(S2[2 . . . 3])=(01),the edge of E(f(S1[j . . . i])) and E(f(S2 [j . . . i])) is also found(edge A). Therefore, the decision at step 202 is again affirmative, andprogram control is shifted to step 232, whereat the parent node (theroot node Vroot) of the edge of E(f(S1[j . . . i])) and E(f(S2[j . . .i])) is substituted into the parameter s. When the process at step 200is performed the next time, the search is initiated beginning at thenode that is stored in the parameter s. In addition, since the temporaryt is φ, the decision at step 234 is affirmative, and the structuresuffix tree generation process is temporarily terminated. When the valueof the counter i is incremented, the structure suffix tree generationprocess is resumed under the condition wherein i=4 and j=2.

Since, with i=4 and j=2, f(S1[j . . . i−1])=f(S1[2 . . . 3])=(00) andf(S2[j . . . i−1])=f(S2[2 . . . 3])=(01), at step 200 the edge ofE(f(S1[j . . . i−1])) and E(f(S2[j . . . i−1])) is found (edge A).Further, since f(S1[j . . . i)=f(S1[2 . . . 4])=(002) and f(S2[j . . .i])=f(S2[2 . . . 4])=(011), the edge of E(f(S1[j . . . i])) and E(f(S2[j. . . i])) is also present (edge A). Therefore, the decision at step 202is again affirmative, and program control is shifted to step 232. Theparent node (root node Vroot) of the edge of E(f(S1[j . . . i])) andE(f(S2[j . . . i])) is substituted into the parameter s. When theprocess at step 200 is performed next, the search is initiated beginningat the node that is stored in the parameter s. Furthermore, since thetemporary t is φ, the decision at step 234 is affirmative, and thestructure suffix tree generation process is temporarily terminated. Whenthe value of the counter i is incremented, the structure suffix treegeneration process is resumed under the condition wherein i=5 and j=2.

Since, with i=5 and j=2, f(S1[j . . . i−1])=f(S1[2 . . . 4])=(002) andf(S2[j . . . i−1])=f(S2[2 . . . 4])=(011), at step 200 the edge ofE(f(S1[j . . . i−1])) and E(f(S2[j . . . i−1])) is found (edge A). Inaddition, since f(S1[j . . . i])=f(S1[2 . . . 5])=(0020) and f(S2[j . .. i])=f(S2[2 . . . 5])=(0110), the edge of E(f(S1[j . . . i])) andE(f(S2[j . . . i]))=φ and the node of V(f(S1[j . . . i−1])) and V(f(S2[j. . . i−1]))=φ. The decisions at steps 202 and 204 are negative, andprogram control is shifted to step 208.

At step 208, the edge of E(f(S1[j . . . i−1])) and E(f(S2[j . . . i−1]))(edge A in this case) is divided based on the search results obtained atstep 200, and a node that corresponds to V(f(S1[j . . . i−1])) andV(f(S2[j . . . i−1])) is generated. Thus, as is shown in FIG. 6B, theedge A is divided into an edge (A1) having labels f(S1[j . . .i−1])=(002) and f(S2[j . . . i−1])=(011), and an edge (A2) having labelsthat are obtained by removing, from the original label, f(S1[j . . .i−1]) and f(S2[j . . . i−1]) (i.e., labels (2003$) and (1014$)). At step210, “YES” is substituted into the flag node#constructed, and programcontrol advances to step 212.

At this time, since the temporary t is φ, the decision at step 212 isaffirmative, and program control is shifted to step 218. Since the flagnode$constructed indicates “YES,” the decision at step 218 isaffirmative, and program control advances to step 222. At step 222, anode of V(f(S1[j . . . i−1])) and V(f(S2[j . . . i−1])) (a node betweenthe edges A1 and A2 in this case) is stored in the temporary t. At step224, the node stored in the area sL of the parent node (root node Vroot)of the node of V(f(S1[j . . . i−1])) and V(f(S2[j . . . i−1])) issubstituted into the parameter s. When the process at step 200 isperformed the next time, the search is initiated beginning at the nodethat is stored in the parameter s.

At step 226, a child node (leaf node) is prepared for the node betweenthe edges A1 and A2. And a label (=(003$)) that is obtained by removingf(S[j . . . i−1])=f(S1[2 . . . 4]))=(002) from f(S1[j . . . ])=φ(S1[2 .. . ])=(002003$) (=(003$)), and a label (=(014$)) that is obtained byremoving f(S2[j . . . i−1])=f(S2[2 . . . 4])=(011) from f(S2[j . . .])=f(S2[2 . . . ])=(011014$) are provided for an edge B between the nodebetween the edges A1 and A2 and the child node.

When the value of the counter j is incremented at step 228, i=5 and j=3is obtained. Thus, the decision at step 230 is negative, and programcontrol returns to step 200, whereat the structure suffix treegeneration process is repeated under the condition wherein i=5 and j=3.

Since with i=5 and j=3, f(S1[j . . . i−1]) f(S1[3 . . . 4])=(00) andf(S2[j . . . i−1])=f(S2[3 . . . 4])=(01), at step 200 the edge ofE(f(S1[j . . . i−1])) and E(f(S2[j . . . i−1])) is found (edge A1).Further, since f(S1[j . . . i])=f(S1[3 . . . 5])=(000) and f(S2[j . . .i])=f(S2[3 . . . 5])=(010), the edge of E(f(S1[j . . . i])) and E(f(S2[j. . . i]))=φ and the node of V(f(S1[j . . . i−1])) and V(f(S2[j . . .i−1]))=φ. The decisions at step 202 and 204 are negative, and programcontrol advances to step 208.

At step 208, the edge (A1 in this case) of E(f(S1[j . . . i−1])) andE(f(S2[j . . . i−1])) is divided based on the search results obtained atstep 200, and a node that corresponds to V(f(S1[j . . . i−1])) andV(f(S2[j . . . i−1])) is prepared. Thus, as is shown in FIG. 6C, theedge A1 is divided into an edge A3 having labels f(S1[j . . . i−1])=(00)and f(S2[j . . . i−1])=(01), and an edge A4 having labels ((2) and (1))that are obtained by removing (f(S1[j . . . i−1]) and f(S2[j . . . i−1])from the original label. At step 210, “YES” is substituted into the flagnode#constructed, and program control advances to step 212.

At this time, since at step 222 the node between the old edge A1(current edge A4) and the edge A2 is stored in the temporary t, thedecision at step 212 is negative and program control advances to step214. Then, the node of V(f(S1[j . . . i−1]) and V(f(S2[j . . . i−1]) (inthis case, the node between the edges A3 and A4) is stored in the areasL of the node that is stored in the temporary t. At step 216, φ issubstituted into the temporary t, and program control advances to step218. Since the flag node#constructed indicates “YES,” the decision atstep 218 is affirmative, and program control advances to step 222.

At step 222, the node of V(f(S1[j . . . i−1])) and V(f(S2[j . . . i−1]))(the node between the edges A3 and A4 in this case) is stored in thetemporary t. At step 224, a node that is stored in the area sL of theparent node (the root node Vroot) of the node of V(f(S1[j . . . i−1]))and V(f(S2[j . . . i−1])) is substituted into the parameter s. When theprocess at step 200 is performed the next time, the search is initiatedbeginning at the node that is stored in the parameter s.

At step 226, a child node (leaf node) is prepared for the node betweenthe edges A3 and A4. Then, a label (=(003$)) that is obtained byremoving f(S1[j . . . i−1])=f(S1[3 . . . 4])=(00) from f(S1[j . . .])=f(S1[3 . . . ])=(00003$), and a label (=(014$)) that is obtained byremoving f(S2[j . . . i−1])=f(S2[3 . . . 4])=(01) from f(S2[j . . .])=f(S2[3 . . . ])=(00014$) are provided for an edge C between the nodebetween the edges A3 and A4, and the child node.

When the value of the counter j is incremented at step 228, i=5 and j=4,and the decision at step 230 is negative. Program control thereafterreturns to step 200, whereat the structure suffix tree generationprocess is repeated under the condition wherein i=5 and j=4.

Since, with i=5 and j=4, f(S1[j . . . i−1])=f(S1[4])=(0) and f(S2[j . .. i−1])=f(S2[4])=(0), at step 200 an edge A3 of E(f(S1[j . . . i−1]) andE(f(S2[j . . . i−1])) is found. Further, since f(S1[j . . . i])=f(S1[4 .. . 5])=(00) and f(S2[j . . . i])=f(S2[4 . . . 5])=(00), the edge ofE(f(S1[j . . . i])) and E(f(S2[j . . . i]))=φ and the node of V(f(S1[j .. . i−1])) and V(f(S2[j . . . i−1]))=φ. Thus, the decisions at steps 202and 204 are negative, and program control advances to step 208.

At step 208, the edge (A3 in this case) of E(f(S1[j . . . i−1])) andE(f(S2[j . . . i−1])) is divided based on the search results obtained atstep 200, and a node that corresponds to V(f(S1[j . . . i−1])) andV(f(S2[j . . . i−1])) is prepared. Thus, as is shown in FIG. 6D, theedge A3 is divided into an edge A5 for which labels f(S1[j . . .i−1])=(0) and f(S2[j . . . i−1])=(0), and an edge A6 for which labels(i.e., (0) and (1)) that are obtained by removing f(S1 [j . . . i−1])and f(S2[j . . . i−1]) from the original label. At step 210, “YES” issubstituted into the flag node#constructed, and program controlthereafter advances to step 212.

At this time, since at step 222 the node between the old edge A3(current edge A6) and the edge A4 is stored in the temporary t, thedecision at step 212 is negative, and program control advances to step214. The node of V(f(S1[j . . . i−1])) and V(f(S2[j . . . i−1])) (thenode between the edges A5 and A6 in this case) is stored in the area sLof the node that is stored in the temporary t. At step 216, φ issubstituted into the temporary t, and program control advances to step218. Since the flag node#constructed indicates “YES,” the decision atstep 218 is affirmative, and program control thereafter advances to step222.

At step 222, the node of V(f(S1[j . . . i−1])) and V(f(S2 [j . . .i−1])) (the node between the edges A5 and A6) is stored in the temporaryt. At step 224, a node that is stored in the area sL of the parent node(root node Vroot in this case) of the node of V(f(S1[j . . . i−1])) andV(f(S2[j . . . i−1])) is substituted into the parameter s. When theprocess at step 200 is performed the next time, the search is initiatedbeginning at the node that is stored in the parameter s.

At step 226, a child node (leaf nod) is prepared for the node betweenthe edges A5 and A6. And a label (=(003$)) that is obtained by removingf(S1[j . . . i−1])=f(S1[4])=(0) from f(S1 [j . . . ])=f(S1[4 . . .])=(0003$) and a label (=(010$)) that is obtained by removing f(S2[j . .. i−1])=(f(S2[4])=(0) from f(S2[j . . . ])=f(S2[4 . . . ])=(0010$) areprovided for an edge D between the node between the edges A5 and A6 andthe child node.

When the value of the counter j is incremented at step 228, i=5 and j=5,and the decision at step 230 is negative. Program control then returnsto step 200, whereat the structure suffix tree generation process isrepeated under the condition wherein i=5 and j=5.

While with i=j=5, S1[j . . . i−1] and S2[j . . . i−1]=φ and the edge ofE(f(S1[j . . . i−1])) and E(f(S2[j . . . i−1]))=φ, S1[j . . .i]=S1[5]=(0) and S2[j . . . . i]=S2[5]=(0), so that the edge (A5) ofE(f(S1[j . . . i])) and E(f(S2[j . . . i])) is present. Thus, thedecision at step 202 is affirmative, and program control is shifted tostep 232. The parent node (the root node Vroot) of the edge of E(f(S1[j. . . i])) and E(f(S2[j . . . i])) is substituted into the parameter s.When the process at step 200 is performed the next time, the search isinitiated beginning at the node that is stored in the parameter s.

At step 234, a check is performed to determine whether the temporary tis φ. Since at step 222 the node between the edges A5 and A6 is storedin the temporary t, the decision at step 234 is negative, and programcontrol advances to step 236. The node (the root node Vroot in thiscase) that has been substituted into the parameter s is stored in thearea sL of the node that is stored in the temporary t. At step 238, φ issubstituted into the temporary t, and the structure suffix treegeneration process is temporarily halted. When the value of the counteri is incremented, the structure suffix tree generation process isresumed under the condition wherein i=6 and j=5.

Since with i=6 and j=5, f(S1[j . . . i−1])=f(S1[5])=(0) and f(S2[j . . .i−1])=f(S2[5])=(0), at step 200 the edge (A5) of E(f(S1[j . . . i−1])and E(f(S2[j . . . i−1])) is found. Further, since S1[j . . . i]=S1[5 .. . 6]=(00) and S2[j . . . i]=S2[5 . . . 6]=(01), the edge (A6) ofE(f(S1[j . . . i])) and E(f(S2[j . . . i])) also exists. Therefore, thedecision at step 202 is affirmative, and program control is shifted tostep 232. The parent node (the node between the edges A5 and A6 in thiscase) of the edge of E(f(S1[j . . . i])) and E(f(S2[j . . . i])) issubstituted into the parameter s. When the process at step 200 isperformed the next time, the search is initiated beginning at the nodethat is stored in the parameter s.

Further, since φ is substituted into the temporary t, the decision atstep 234 is affirmative, and the structure suffix tree generationprocess is temporarily halted. When the value of the counter i isincremented, the structure suffix tree generation process is resumedunder the condition wherein i=7 and j=5.

Since, with i=7 and j=5, f(S1[j . . . i−1])=f(S1[5 . . . 6])=(00) andf(S2[j . . . i−1])=f(S2[5 . . . 6])=(01), at step 200 the edge (A6) ofE(F(S1[j . . . i−1])) and E(f(S2[j . . . i−1])) is found. Further, sinceS1[j . . . i]=S1[5 . . . 7]=(000) and S2[j . . . i]=S2[5 . . . 7]=(010),the edge C of E(f(S1[j . . . i])) and E(f(S2[j . . . i])) is alsopresent. Therefore, the decision at step 202 is affirmative, and programcontrol is shifted to step 232. The parent node (the node between theedges A6 and C in this case) of the edge of E(f(S1[j . . . i])) andE(f(S2[j . . . i])) is substituted into the parameter s. When theprocess at step 200 is performed the next time, the search is initiatedbeginning at the node that is stored in the parameter s.

Since φ is substituted into the temporary t, the decision at step 234 isaffirmative, and the structure suffix tree generation process istemporarily halted. When the value of the counter i is incremented, thestructure suffix tree generation process is resumed under the conditionwherein i=8 and j=5.

Since with i=8 and j=5, f(S1[j . . . i−1])=f(S1[5 . . . 7])=(000) andf(S2[j . . . i−1])=f(S2[5 . . . 7])=(010), at step 200 the edge C ofE(f(S1[j . . . i−1])) and E(f(S2[j . . . i−1])) is found. Furthermore,since f(S1[j . . . i])=f(S1[5 . . . 8])=(000$) and f(S2[j . . .i])=f(S2[5 . . . 8])=(010$), the edge of E(f(S1[j . . . i])) andE(f(S2[j . . . i]))=φ, and the node of V(f(S1[j . . . i−1])) andV(f(S2[j . . . i−1]]))=φ. Thus, the decisions at steps 202 and 204 arenegative, and program control advances to step 208.

At step 208, the edge (edge C in this case) of E(f(S1[j . . . i−1])) andE(f(S2[j . . . i−1])) is divided, and a node that corresponds toV(f(S1[j . . . i−1])) and V(f(S2[j . . . i−1])) is prepared. Thus, as isshown in FIG. 6E, the edge C is divided into an edge C1 having labels off(S1[j . . . i−1])=(0) and f(S2[j . . . i−1])=(0), and an edge C2 havinglabels ((03$) and (14$)) that are obtained by removing f(S1[j . . .i−1]) and f(S2[j . . . i−1]) from the original label. At step 210, “YES”is substituted into the flag node#constructed, and program controladvances to step 212.

Since the temporary t is φ at this time, the decision at step 212 isaffirmative, and program control is shifted to step 218. Since the flagnode#constructed indicates “YES,” the decision at step 218 isaffirmative, and program control advances to step 222. At step 222, thenode (the node between the edges C1 and C2 in this case) of V(f(S1[j . .. i−1])) and V(f(S2[j . . . i−1])) is stored in the temporary t. At step224, a node that is stored in the area sL of the parent node (the nodebetween the edges A6 and C1 in this case) of the node of V(f(S1[j . . .i−1])) and V(f(S2[j . . . i−1])) is substituted into the parameter s.When the process at step 200 is performed the next time, the search isinitiated beginning at the node that is stored in the parameter s.

At step 226, a child node (leaf node) is prepared for the node betweenthe edges C1 and C2. Then, a label (=($)) that is obtained by removingf(S1[j . . . i−1])=f(S1[5 . . . 7])=(000) from f(S1[j . . . ])=f(S1[5 .. . ])=(000$), and a label (=($)) that is obtained by removing f(S2[j .. . i−1])=f(S2[5 . . . 7])=(010) from f(S2[j . . . ])=f(S2[5 . . .])=(010$) are provided for an edge E between the node between the edgesC1 and C2 and the child node. Through the above processing, for a rangeof j=1 to 5, the suffixes f(S1[j . . . ]) and f(S2[j . . . ]) of thefirst character string S1 and the second character string S2 are builtin the structure suffix tree.

A brief explanation will now be given as for the range wherein j 6. Forsuffixes f(S1[6 . . . ])=(00$) and f(S2[6 . . . ])=(00$), as is shown inFIG. 6F, an edge D is divided into an edge D1 having labels of f(S1[j .. . i−1])=f(S1[6])=(0) and f(S2[j . . . i−1])=f(S2[6])=(0), and an edgeD2 having labels (03$) and (10$) that are obtained by removing f(S1[j .. . i−1]) and f(S2[j . . . i−1]) from the original label. A child nodeis prepared between the edges D1 and D2. And a label (=($)) that isobtained by removing f(S1[j . . . i−1])=f(S1[6 . . . 7])=(00) fromf(S1[j . . . ])=f(S1[6 . . . ])=(00$) and a label (=($)) that isobtained by removing f(S2[j . . . i−1])=f(S2[6 . . . 7])=(00) fromf(S2[j . . . ])=f(S2[6 . . . ])=(000$) are provided for an edge Fbetween the node between the edges D1 and D2 and the child node. As aresult, the suffixes f(S1[6 . . . ])=(00$) and f(S2[6 . . . ])=(00$) areassembled into the structure suffix tree.

For suffixes f(S1[7 . . . ])=(0$) and f(S2[7 . . . ])=(0$), as is shownin FIG. 6G, a child node is prepared between the edges A5 and A6. And alabel (=($)) that is obtained by removing f(S1[j . . .i−1])=f(S1[7])=(0) from f(S1[j . . . ])=f(S1[7 . . . ])=(0$) and a label(=($)) that is obtained by removing f(S2[j . . . i−1])=f(S2[7])=(0) fromf(S2[j . . . ])=f(S2[7 . . . ])=(0$) are provided for an edge G betweenthe node between the edges A5 and A6 and the child node. As a result,the suffixes f(S1[7 . . . ])=(0$) and f(S2[7 . . . ])=(0$) are assembledinto the structure suffix tree.

Further, for suffixes f(S1 [8])=($) and f(S2[8])=($), as is shown inFIG. 6H, a child node is prepared for the root node. And a label off(S1[j . . . ])=f(S1[8])=($) (f(S1[j . . . i−1])=φ) and a label off(S2[j . . . ])=f(S2[8])=($) (f(S2[j . . . i−1])=φ) are provided for anedge H between the root node and the child node. As a result, thesuffixes f(S1[8])=($) and f(S2[8])=($) are assembled into the structuresuffix tree.

To make it easier to understand the structure suffix tree generationprocessing, an explanation has been given by employing a characterstring S that is much shorter than a character string that will actuallybe processed. Therefore, it is difficult to say that the area sL and thetemporary t will function effectively. However, as the length of thecharacter string and the scale of the suffix tree to be generated areincreased, the area sL and the temporary t function more effectively,and the search at step 200 begins at a lower node based on theinformation stored in the area sL and the temporary t. Therefore, thetime required to search for a node and to generate a structure suffixtree can be considerably reduced.

When the structure suffix tree for the target character string S isgenerated in the above described manner, the value of the counter iexceeds the value n, and the decision at step 110 is affirmative. Thestructure suffix tree generation processing is thereafter terminated.

An explanation will now be given for the analyzation of the structure ofthe character string S by using the structure suffix tree of thecharacter string S (when the character string S represents a base array,the analyzation of the structure of the character string S is equivalentto the analyzation of the structure of the base array). The followingprocessing is also implemented by the structure analyzation program thatis installed in the computer system 10.

Sequences that are present in a single-stranded DNA base array or an RNAbase array and that have the same structure tend to have similarfunctions. And when identical sequences or sequences that, even thoughtheir appearances differ, have the same structure appear frequently, thesequences may acquire a three-dimensional structure that induces animportant function. Therefore, for the analyzation of geneticinformation, it is very important that sequences that have the samestructure and that frequently appear in a single-stranded DNA base arrayor an RNA base array, including those sequences that have the samestructure but that have different appearances, are regarded andextracted as identical sequences. On the other hand, through thefollowing simple process, for which the structure suffix tree is used,all the character sequences that frequently appear in a character stringS can be extracted, including the character sequences that have the samestructure but that have different appearances.

That is, in the structure suffix tree, when a specific node V includes ileaf nodes as descendants (all the nodes present toward leaves as viewedfrom the node V), i character sequences of label(V) are present in thecharacter string S (the same thing is applicable for the suffix tree).Therefore, a sequence that has a length of at least m and that appearsat least i times can be extracted by searching all the nodes of thesuffix tree that have at least i leaf nodes as descendants.

The above search method is the same as the method employed whenfrequently appearing character sequences are extracted from the suffixtree. When the structure suffix tree of the invention is employed forthe search, all the sequences, including those that have the samestructure but that have different appearances, can be extracted.

For the analyzation of genetic information, in addition to the abovedescribed extraction of frequently appearing sequences, it is alsoextremely important that the sequences that are present in the two basearrays be regarded and extracted as sequences having the same structure,regardless of whether these sequences have the same appearance. On theother hand, by employing the following simple process that uses thestructure suffix tree, all the common character sequences that arepresent in the character string pair can be extracted, including thesequences that have the same structure but have different appearances.

Specifically, initially the character strings S1 and S2 (the firsttarget array and the second target array), from which a common charactersequence is to be extracted, are coupled together and the followingcharacter string S is obtained.

S=S1+‘$1’+S2+‘$2’ where + denotes coupling, $1 denotes a first endidentification character (first identification data), and $2 denotes asecond end identification character (second identification data). Then,the above described structure suffix tree generation process (thecalculations performed for prev(S) and compl(S) and the generation of astructure suffix tree) is performed for the character string S that isemployed as a processing target.

For the thus structured suffix tree, if a specific node V other than aleaf node has as descendants a leaf node V1 whose label(V) includes $1and a leaf node V2 whose label(V2) does not include $₁, it can beascertained that the label(V) is a character sequence common to thecharacter strings S1 and S2. Therefore, all the nodes that match theabove condition are searched for and extracted from the structure suffixtree, so that all the character sequences common to the characterstrings S1 and S2 are extracted, including the sequences that have thesame structure but have different appearances.

Through the calculations performed for prev(S) and compl(S) using thecharacter string S, the first character string S1 and the secondcharacter string S2 that are obtained are regarded as a single pair ofcorresponding character strings, and a structure suffix tree is preparedwherein a label that corresponds to the character sequence of the firstcharacter string S1 and a label that corresponds to the charactersequence of the second character string S2 are provided for theindividual edges. Another method may also be used to generate the suffixtree.

Specifically, after the first character string S1 and the secondcharacter string S2 are obtained by performing the prev(S) and compl(S)calculations, all the “0”s that are present in one (defined as acharacter string A) of the character strings S1 and S2 are replaced withnumerical values for which the signs of numerical values that arepresent at the same positions as the “0”s are inverted. Or, thecharacter string may be replaced in accordance with an algorithm fordirectly changing the target character string into a character stringthat is obtained using the above described replacement process. Then, asingle character string that is obtained may be employed to generate astructure suffix. In this case, since the amount of data for thecharacter string that is provided as a label for each edge can bereduced, a smaller memory capacity will be required for the storage ofthe structure suffix tree.

Further, in the structure suffix tree generation process in FIG. 5, eachtime a new node other than a leaf node is generated (step 208) (i.e.,each time “YES” is substituted into the flag node#constructed), the nodeof V(f(S1[j . . . i−1])) and V(f(S2[j . . . i−1)) is stored in thetemporary t (step 222). Then, when the structure suffix tree generationprocess is performed the next time, the node of V(f(S1[j . . . i−1]))and V(f(S2[j . . . i−1])) (step 214), or a node that is substituted intothe parameter s (step 236), is stored in the area sL of the node that isstored in the temporary t. The stored node is employed at step 200 todetermine a node whereby the search for an edge is to be initiated. Theinvention, however, is not limited to this process, and a set T (with φas the initial value) of nodes may be set for each edge of the structuresuffix tree, and a node may be stored in the area sL by using the set Tas follows.

Specifically, each time a new node other than a leaf node is prepared(step 208), all the nodes of the set T(e0) that corresponds to the edge(e0) of E(f(S1[j . . . i−1])) and E(f(S1[j . . . i−1])) are sorted inaccordance with whether the value obtained by adding one to the lengthof the corresponding label is smaller than “i−2” or is greater than“i−1.” Assume that of the two edges acquired by the edge division atstep 208, an edge near the root node Vroot is defined as an edge e1, andan edge farther from the root node Vroot is defined as an edge e2. Ofthe nodes belonging to the set T(e0), the node whose label isascertained to be shorter than “i−2” is allocated to the set T(e1) ofthe edge e1, while the node whose label is ascertained to be longer than“i−1” is allocated to the set T(e2) of the edge e2. For all the nodes vthat are allocated to the set T(e2), the node of V(f(S1[j . . . i−1]))and V(f(S2[j . . . i−1])) is stored in the area sL(v). Then, at step236, the node that is substituted into the parameter s is stored in thearea sL of the node that is stored in the temporary t, and followingthis, the node that is stored in the temporary t is added to the setT(E(f(S1[j . . . i−1])) and E(f(S1[j . . . i−1]))).

Through the above processing, although the structure suffix treegeneration process is slightly complicated, the search at step 200 canbe initiated at a lower node, and the time required to search for a nodeand to generate a structure suffix tree can be further reduced.

The analyzation of the structure of a target array has been explained byusing a character string that can be obtained by replacing the elementsof the array with other characters. In this embodiment, arbitrary datacan be used to replace the elements of the array, and an arbitrary datastring that represents the target array can be employed to analyze thestructure of the target array.

In the above description, the present invention has been applied for theanalyzation of the structure of a DNA base array and an RNA base array.However, the present invention is not limited to such analyzations, andcan also be applied for the analyzation of a similar polymer arraystructure.

In addition, in the above explanation, the structure analyzation programthat carries out the array conversion method and the structureanalyzation method of the invention is originally stored on the datastorage medium 60, which is the storage medium that is employed inaccordance with the present invention. Further, when the program on thedata storage medium 60 is installed in the computer system 10 andexecuted, the computer system 10 functions as the structure analyzationapparatus of the invention. However, another mode may be employed. Thatis, the structure analyzation program may be retained in the storagedevice of another information processing apparatus (e.g., a networkserver) that is connected, across a computer network (e.g., a LAN, theInternet or a wireless communication network), to the computer system 10via a public line or a communication medium (an optical fiber or awireless line). When the computer system 10 communicates with theinformation processing apparatus, the program is transmitted from theinformation processing apparatus via the communication medium (thetransmission medium of the invention) to the computer system 10. Then,the computer system 10 installs the received program in storage means,such as the HDD 40, and executes it, and can thus function as thestructure analyzation apparatus of the present invention.

The experiments conducted by the present inventor will now be described.

First Embodiment

The following are all the HIV (Human Immunodeficiency Virus) RNA arrays(accession numbers of arrays: K03455; length: 9719).

tggaagggct aattcactcc caacgaagac aagatatcct tgatctgtgg atctaccacacacaaggcta cttccctgat tagcagaact acacaccagg gccagggatc agatatccactgacctttgg atggtgctac aagctagtac cagttgagcc agagaagtta gaagaagccaacaaaggaga gaacaccagc ttgttacacc ctgtgagcct gcatggaatg gatgacccggagagagaagt gttagagtgg aggtttgaca gccgcctagc atttcatcac atggcccgagagctgcatcc ggagtacttc aagaactgct gacatcgagc ttgctacaag ggactttccgctggggactt tccagggagg cgtggcctgg gcgggactgg ggagtggcga gccctcagatcctgcatata agcagctgct ttttgcctgt actgggtctc tctggttaga ccagatctgagcctgggagc tctctggcta actagggaac ccactgctta agcctcaata aagcttgccttgagtgcttc aagtagtgtg tgcccgtctg ttgtgtgact ctggtaacta gagatccctcagaccctttt agtcagtgtg gaaaatctct agcagtggcg cccgaacagg gacctgaaagcgaaagggaa accagaggag ctctctcgac gcaggactcg gcttgctgaa gcgcgcacggcaagaggcga ggggcggcga ctggtgagta cgccaaaaat tttgactagc ggaggctagaaggagagaga tgggtgcgag agcgtcagta ttaagcgggg gagaattaga tcgatgggaaaaaattcggt taaggccagg gggaaagaaa aaatataaat taaaacatat agtatgggcaagcagggagc tagaacgatt cgcagttaat cctggcctgt tagaaacatc agaaggctgtagacaaatac tgggacagct acaaccatcc cttcagacag gatcagaaga acttagatcattatataata cagtagcaac cctctattgt gtgcatcaaa ggatagagat aaaagacaccaaggaagctt tagacaagat agaggaagag caaaacaaaa gtaagaaaaa agcacagcaagcagcagctg acacaggaca cagcaatcag gtcagccaaa attaccctat agtgcagaacatccaggggc aaatggtaca tcaggccata tcacctagaa ctttaaatgc atgggtaaaagtagtagaag agaaggcttt cagcccagaa gtgataccca tgttttcagc attatcagaaggagccaccc cacaagattt aaacaccatg ctaaacacag tggggggaca tcaagcagccatgcaaatgt taaaagagac catcaatgag gaagctgcag aatgggatag agtgcatccagtgcatgcag ggcctattgc accaggccag atgagagaac caaggggaag tgacatagcaggaactacta gtacccttca ggaacaaata ggatggatga caaataatcc acctatcccagtaggagaaa tttataaaag atggataatc ctgggattaa ataaaatagt aagaatgtatagccctacca gcattctgga cataagacaa ggaccaaagg aaccctttag agactatgtagaccggttct ataaaactct aagagccgag caagcttcac aggaggtaaa aaattggatgacagaaacct tgttggtcca aaatgcgaac ccagattgta agactatttt aaaagcattgggaccagcgg ctacactaga agaaatgatg acagcatgtc agggagtagg aggacccggccataaggcaa gagttttggc tgaagcaatg agccaagtaa caaattcagc taccataatgatgcagagag gcaattttag gaaccaaaga aagattgtta agtgtttcaa ttgtggcaaagaagggcaca cagccagaaa ttgcagggcc cctaggaaaa agggctgttg gaaatgtggaaaggaaggac accaaatgaa agattgtact gagagacagg ctaatttttt agggaagatctggccttcct acaagggaag gccagggaat tttcttcaga gcagaccaga gccaacagccccaccagaag agagcttcag gtctggggta gagacaacaa ctccccctca gaagcaggagccgatagaca aggaactgta tcctttaact tccctcaggt cactctttgg caacgacccctcgtcacaat aaagataggg gggcaactaa aggaagctct attagataca ggagcagatgatacagtatt agaagaaatg agtttgccag gaagatggaa accaaaaatg atagggggaattggaggttt tatcaaagta agacagtatg atcagatact catagaaatc tgtggacataaagctatagg tacagtatta gtaggaccta cacctgtcaa cataattgga agaaatctgttgactcagat tggttgcact ttaaattttc ccattagccc tattgagact gtaccagtaaaattaaagcc aggaatggat ggcccaaaag ttaaacaatg gccattgaca gaagaaaaaataaaagcatt agtagaaatt tgtacagaga tggaaaagga agggaaaatt tcaaaaattgggcctgaaaa tccatacaat actccagtat ttgccataaa gaaaaaagac agtactaaatggagaaaatt agtagatttc agagaactta ataagagaac tcaagacttc tgggaagttcaattaggaat accacatccc gcagggttaa aaaagaaaaa atcagtaaca gtactggatgtgggtgatgc atatttttca gttcccttag atgaagactt caggaagtat actgcatttaccatacctag tataaacaat gagacaccag ggattagata tcagtacaat gtgcttccacagggatggaa aggatcacca gcaatattcc aaagtagcat gacaaaaatc ttagagccttttagaaaaca aaatccagac atagttatct atcaatacat ggatgatttg tatgtaggatctgacttaga aatagggcag catagaacaa aaatagagga gctgagacaa catctgttgaggtggggact taccacacca gacaaaaaac atcagaaaga acctccattc ctttggatgggttatgaact ccatcctgat aaatggacag tacagcctat agtgctgcca gaaaaagacagctggactgt caatgacata cagaagttag tggggaaatt gaattgggca agtcagatttacccagggat taaagtaagg caattatgta aactccttag aggaaccaaa gcactaacagaagtaatacc actaacagaa gaagcagagc tagaactggc agaaaacaga gagattctaaaagaaccagt acatggagtg tattatgacc catcaaaaga cttaatagca gaaatacagaagcaggggca aggccaatgg acatatcaaa tttatcaaga gccatttaaa aatctgaaaacaggaaaata tgcaagaatg aggggtgccc acactaatga tgtaaaacaa ttaacagaggcagtgcaaaa aataaccaca gaaagcatag taatatgggg aaagactcct aaatttaaactgcccataca aaaggaaaca tgggaaacat ggtggacaga gtattggcaa gccacctggattcctgagtg ggagtttgtt aatacccctc ccttagtgaa attatggtac cagttagagaaagaacccat agtaggagca gaaaccttct atgtagatgg ggcagctaac agggagactaaattaggaaa agcaggatat gttactaata gaggaagaca aaaagttgtc accctaactgacacaacaaa tcagaagact gagttacaag caatttatct agctttgcag gattcgggattagaagtaaa catagtaaca gactcacaat atgcattagg aatcattcaa gcacaaccagatcaaagtga atcagagtta gtcaatcaaa taatagagca gttaataaaa aaggaaaaggtctatctggc atgggtacca gcacacaaag gaattggagg aaatgaacaa gtagataaattagtcagtgc tggaatcagg aaagtactat ttttagatgg aatagataag gcccaagatgaacatgagaa atatcacagt aattggagag caatggctag tgattttaac ctgccacctgtagtagcaaa agaaatagta gccagctgtg ataaatgtca gctaaaagga gaagccatgcatggacaagt agactgtagt ccaggaatat ggcaactaga ttgtacacat ttagaaggaaaagttatcct ggtagcagtt catgtagcca gtggatatat agaagcagaa gttattccagcagaaacagg gcaggaaaca gcatattttc ttttaaaatt agcaggaaga tggccagtaaaaacaataca tactgacaat ggcagcaatt tcaccggtgc tacggttagg gccgcctgttggtgggcggg aatcaagcag gaatttggaa ttccctacaa tccccaaagt caaggagtagtagaatctat gaataaagaa ttaaagaaaa ttataggaca ggtaagagat caggctgaacatcttaagac agcagtacaa atggcagtat tcatccacaa ttttaaaaga aaaggggggattggggggta cagtgcaggg gaaagaatag tagacataat agcaacagac atacaaactaaagaattaca aaaacaaatt acaaaaattc aaaattttcg ggtttattac agggacagcagaaatccact ttggaaagga ccagcaaagc tcctctggaa aggtgaaggg gcagtagtaatacaagataa tagtgacata aaagtagtgc caagaagaaa agcaaagatc attagggattatggaaaaca gatggcaggt gatgattgtg tggcaagtag acaggatgag gattagaacatggaaaagtt tagtaaaaca ccatatgtat gtttcaggga aagctagggg atggttttatagacatcact atgaaagccc tcatccaaga ataagttcag aagtacacat cccactaggggatgctagat tggtaataac aacatattgg ggtctgcata caggagaaag agactggcatttgggtcagg gagtctccat agaatggagg aaaaagagat atagcacaca agtagaccctgaactagcag accaactaat tcatctgtat tactttgact gtttttcaga ctctgctataagaaaggcct tattaggaca catagttagc cctaggtgtg aatatcaagc aggacataacaaggtaggat ctctacaata cttggcacta gcagcattaa taacaccaaa aaagataaagccacctttgc ctagtgttac gaaactgaca gaggatagat ggaacaagcc ccagaagaccaagggccaca gagggagcca cacaatgaat ggacactaga gcttttagag gagcttaagaatgaagctgt tagacatttt cctaggattt ggctccatgg cttagggcaa catatctatgaaacttatgg ggatacttgg gcaggagtgg aagccataat aagaattctg caacaactgctgtttatcca ttttcagaat tgggtgtcga catagcagaa taggcgttac tcgacagaggagagcaagaa atggagccag tagatcctag actagagccc tggaagcatc caggaagtcagcctaaaact gcttgtacca attgctattg taaaaagtgt tgctttcatt gccaagtttgtttcataaca aaagccttag gcatctccta tggcaggaag aagcggagac agcgacgaagagctcatcag aacagtcaga ctcatcaagc ttctctatca aagcagtaag tagtacatgtaacgcaacct ataccaatag tagcaatagt agcattagta gtagcaataa taatagcaatagttgtgtgg tccatagtaa tcatagaata taggaaaata ttaagacaaa gaaaaatagacaggttaatt gatagactaa tagaaagagc agaagacagt ggcaatgaga gtgaaggagaaatatcagca cttgtggaga tgggggtgga gatggggcac catgctcctt gggatgttgatgatctgtag tgctacagaa aaattgtggg tcacagtcta ttatggggta cctgtgtggaaggaagcaac caccactcta ttttgtgcat cagatgctaa agcatatgat acagaggtacataatgtttg ggccacacat gcctgtgtac ccacagaccc caacccacaa gaagtagtattggtaaatgt gacagaaaat tttaacatgt ggaaaaatga catggtagaa cagatgcatgaggatataat cagtttatgg gatcaaagcc taaagccatg tgtaaaatta accccactctgtgttagttt aaagtgcact gatttgaaga atgatactaa taccaatagt agtagcgggagaatgataat ggagaaagga gagataaaaa actgctcttt caatatcagc acaagcataagaggtaaggt gcagaaagaa tatgcatttt tttataaact tgatataata ccaatagataatgatactac cagctataag ttgacaagtt gtaacacctc agtcattaca caggcctgtccaaaggtatc ctttgagcca attcccatac attattgtgc cccggctggt tttgcgattctaaaatgtaa taataagacg ttcaatggaa caggaccatg tacaaatgtc agcacagtacaatgtacaca tggaattagg ccagtagtat caactcaact gctgttaaat ggcagtctagcagaagaaga ggtagtaatt agatctgtca atttcacgga caatgctaaa accataatagtacagctgaa cacatctgta gaaattaatt gtacaagacc caacaacaat acaagaaaaagaatccgtat ccagagagga ccagggagag catttgttac aataggaaaa ataggaaatatgagacaagc acattgtaac attagtagag caaaatggaa taacacttta aaacagatagctagcaaatt aagagaacaa tttggaaata ataaaacaat aatctttaag caatcctcaggaggggaccc agaaattgta acgcacagtt ttaattgtgg aggggaattt ttctactgtaattcaacaca actgtttaat agtacttggt ttaatagtac ttggagtact gaagggtcaaataacactga aggaagtgac acaatcaccc tcccatgcag aataaaacaa attataaacatgtggcagaa agtaggaaaa gcaatgtatg cccctcccat cagtggacaa attagatgttcatcaaatat tacagggctg ctattaacaa gagatggtgg taatagcaac aatgagtccgagatcttcag acctggagga ggagatatga gggacaattg gagaagtgaa ttatataaatataaagtagt aaaaattgaa ccattaggag tagcacccac caaggcaaag agaagagtggtgcagagaga aaaaagagca gtgggaatag gagctttgtt ccttgggttc ttgggagcagcaggaagcac tatgggcgca gcctcaatga cgctgacggt acaggccaga caattattgtctggtatagt gcagcagcag aacaatttgc tgagggctat tgaggcgcaa cagcatctgttgcaactcac agtctggggc atcaagcagc tccaggcaag aatcctggct gtggaaagatacctaaagga tcaacagctc ctggggattt ggggttgctc tggaaaactc atttgcaccactgctgtgcc ttggaatgct agttggagta ataaatctct ggaacagatt tggaatcacacgacctggat ggagtgggac agagaaatta acaattacac aagcttaata cactccttaattgaagaatc gcaaaaccag caagaaaaga atgaacaaga attattggaa ttagataaatgggcaagttt gtggaattgg tttaacataa caaattggct gtggtatata aaattattcataatgatagt aggaggcttg gtaggtttaa gaatagtttt tgctgtactt tctatagtgaatagagttag gcagggatat tcaccattat cgtttcagac ccacctccca accccgaggggacccgacag gcccgaagga atagaagaag aaggtggaga gagagacaga gacagatccattcgattagt gaacggatcc ttggcactta tctgggacga tctgcggagc ctgtgcctcttcagctacca ccgcttgaga gacttactct tgattgtaac gaggattgtg gaacttctgggacgcagggg gtgggaagcc ctcaaatatt ggtggaatct cctacagtat tggagtcaggaactaaagaa tagtgctgtt agcttgctca atgccacagc catagcagta gctgaggggacagatagggt tatagaagta gtacaaggag cttgtagagc tattcgccac atacctagaagaataagaca gggcttggaa aggattttgc tataagatgg gtggcaagtg gtcaaaaagtagtgtgattg gatggcctac tgtaagggaa agaatgagac gagctgagcc agcagcagatagggtgggag cagcatctcg agacctggaa aaacatggag caatcacaag tagcaatacagcagctacca atgctgcttg tgcctggcta gaagcacaag aggaggagga ggtgggttttccagtcacac ctcaggtacc tttaagacca atgacttaca aggcagctgt agatcttagccactttttaa aagaaaaggg gggactggaa gggctaattc actcccaaag aagacaagatatccttgatc tgtggatcta ccacacacaa ggctacttcc ctgattagca gaactacacaccagggccag gggtcagata tccactgacc tttggatggt gctacaagct agtaccagttgagccagata agatagaaga ggccaataaa ggagagaaca ccagcttgtt acaccctgtgagcctgcatg ggatggatga cccggagaga gaagtgttag agtggaggtt tgacagccgcctagcatttc atcacgtggc ccgagagctg catccggagt acttcaagaa ctgctgacatcgagcttgct acaagggact ttccgctggg gactttccag ggaggcgtgg cctgggcgggactggggagt ggcgagccct cagatcctgc atataagcag ctgctttttg cctgtactgggtctctctgg ttagaccaga tctgagcctg ggagctctct ggctaactag ggaacccactgcttaagcct caataaagct tgccttgagt gcttcaagta gtgtgtgccc gtctgttgtgtgactctggt aactagagat ccctcagacc cttttagtca gtgtggaaaa tctctagca

For the above arrays, the present inventor employed the presentinvention to conduct an experiment in which a search was conducted forall patterns that had a length of at least 10 and that appeared at leastthree times. The search results are shown below.

===1st pattern: length = 10   55: CCACACACAA 9140: CCACACACAA  238:GGAGAGAGAA 9323: GGAGAGAGAA ===2nd pattern: length = 10  259: GAGGTTTGAC9344: GAGGTTTGAC  345: ACAAGGGACT 9430: ACAAGGGACT ===3rd pattern:length = 10  349: GGGACTTTCC 9434: GGGACTTTCC  363: GGGACTTTCC 9448:GGGACTTTCC 5131: TTTCAGGGAA ===4th pattern: length = 10  294: CCCGAGACGT9379: CCCGAGAGCT  622: AAATCTCTAG 9707: AAATCTCTAG ===5th pattern:length = 10  485: GGAGCTCTCT 9570: GGAGCTCTCT  676: GGAGCTCTCT ===6thpattern: length = 10  227: ATGGATGACC 9312: ATGGATGACC  700: GCTTGCTGAA===7th pattern: length = 10   54: ACCACACACA 9139: ACCACACACA  780:AGGAGAGAGA ===8th pattern: length = 10   26: AGACAAGATA 9111: AGACAAGATA1092: AGACAAGATA ===9th pattern: length = 11  274: CCTAGCATTTC 9359:CCTAGCATTTC 1345: CCATGCTAAAC ===10th pattern: length = 10   13:TCACTCCCAA 1739: GACAGAAACC 9098: TCACTCCCAA ===11th pattern: length= 10   93: CACCAGGGCC 9178: CACCAGGGCC 1849: GAGGACCCGG ===12th pattern:length = 10 1948: GAAAGATTGT 2057: GAAAGATTGT 5591: AGGGAGCCAC ===13thpattern: length = 10  343: CTACAAGGGA 9428: CTACAAGGGA 2108: CTACAAGGGA===14th pattern: length = 10  567: CTGTTGTGTG 9652: CTGTTGTGTG 2164:CAGAAGAGAG ===15th pattern: length = 10  943: AAACATCAGA 3206:AAACATCAGA 2277: CCCTCGTCAC 7369: TTTCTACTGT ===16th pattern: length= 11 1817: AGAAGAAATGA 2350: AGAAGAAATGA 3962: ACAACAAATCA ===17thpattern: length = 10  414: TCAGATCCTG 9499: TCAGATCCTG 2567: ACTGTACCAG===18th pattern: length = 10  515: GCTTAAGCCT 9600: GCTTAAGCCT 2617:ATGGCCATTG ===19th pattern: length = 10  863: AAAGAAAAAA 2851:AAAGAAAAAA 2737: AAAGAAAAAA ===20th pattern: length = 10  864:AAGAAAAAAT 2631: AAGAAAAAT 2852: AAGAAAAAAT ===21st pattern: length = 102484: GACCTACACC 2873: CTGGATGTGG 4066: TCAAGCACAA ===22nd pattern:length = 10  335: CTAGCTTGCT 9420: CGAGCTTGCT 3095: TACATGGATG ===23rdpattern: length = 10 2739: AGAAAAAAGA 3201: ACAAAAAACA 7747: AGAAAAAAGA===24th pattern: length = 11 2276: CCCCTCGTCAC 3205: AAAACATCAGA 7368:TTTTCCTACTGT ===25th pattern: length = 11  123: CCTTTGGATGG 9208:CCTTTGGATGG 3229: CCTTTGGATGG ===26th pattern: length = 11  353:CTTTCCGCTGG 9438: CTTTCCGCTGG 3237: TGGGTTATGAA ===27th pattern: length= 10  354: TTTCCGCTGG 9439: TTTCCGCTGG 3238: GGGTTATGAA ===28th pattern:length = 10  405: GGCGAGCCCT 9490: GGCGAGCCCT 3383: TTATGTAAAC ===29thpattern: length = 10 3326: TTAGTGGGGA 3457: GGCAGAAAAC 3516: AATGAGGGGT===30th pattern: length = 10  554: AGTGTGTGCC 9639: AGTGTGTGCC 3466:CAGAGAGATT ===31st pattern: length = 10  395: ACTGGGGAGT 9480:ACTGGGGAGT 3593: CTGAAAACAG ===32nd pattern: length = 10 2646:CATTAGTAGA 3633: CTAATGATGT 7219: CATTAGTAGA ===33rd pattern: length= 10  611: GTCAGTGTGG 9696: GTCAGTGTGG 9001: CAGTCACACC 3956: ACTGACACAA===34th pattern: length = 11   86: AACTACACACC 9171: AACTACACACC 4157:CCAGCACACAA ===35th pattern: length = 10  608: TTAGTCAGTG 9693:TTAGTCAGTG 4199: TTAGTCAGTG ===36th pattern: length = 10   83:CAGAACTACA 9168: CAGAACTACA 4383: GACAAGTAGA ===37th pattern: length= 10   65: GGCTACTTCC 9150: GGCTACTTCC 4538: TTAGCAGGAA ===38th pattern:length = 10 2895: TTTCAGTTCC 4665: AAAGTCAAGG 9080: GGGACTGGAA ===39thpattern: length = 10 4524: ATTTTCTTTT 4783: TAAAAGAAAA 9067: TAAAAGAAAA===40th pattern: length = 10  585: AACTAGAGAT 9670: AACTAGAGAT 5200:AAGTACACAT ===41st pattern: length = 10  307: TCCGGAGTAC 9392:TCCGGAGTAC 5742: GAATTCTGCA ===42nd pattern: length = 11  369:TTCCAGGGAGG 9454: TTCCAGGGAGG 5931: CCAAGTTTGTT ===43rd pattern: length= 10  370: TCCAGGGAGG 9455: TCCAGGGAGG 5932: CAAGTTTGTT ===44th pattern:length = 10 3848: ATAGTAGGAG 5991: GCGACGAAGA 8285: ATAGTAGGAG ===45thpattern: length = 10 6078: AGTAGCAATA 6099: AGTAGCAATA 8928: AGTAGCAATA===46th pattern: length = 10   90: ACACACCAGG 9175: ACACACCAGG 6123:TGTGTGGTCC 7152: AGAGAGGACC ===47th pattern: length = 10 3601:AGGAAAATAT 5151: TGGTTTTATA 6251: AGGAAAATAT ===48th pattern: length= 10 1105: AAGAGCAAAA 6255: GGAGATGGGG 6267: GGAGATGGGG ===49th pattern:length = 10 3874: AGATGGGGCA 6269: AGATGGGGCA 7227: GAGCAAAATG ===50thpattern: length = 10 6047: AAGTAGTACA 6296: TTGATGATCT 8715: AAGTAGTACA===51st pattern: length = 13   42: ATCTGTGGATCTA 9127: ATCTGTGGATCTA6409: TACAGAGGTACAT ===52nd pattern: length = 10  235: CCCGGAGAGA 9320:CCCGGAGAGA 6429: GGGCCACACA ===53rd pattern: length = 11  589:AGAGATCCCTC 9674: AGAGATCCCTC 6443: TGTGTACCCAC ===54th pattern: length= 10  590: GAGATCCCTC 9675: GAGATCCCTC 6444: GTGTACCCAC ===55th pattern:length = 10 6294: TGTTGATGAT 8713: AGAAGTAGTA 6469: AGAAGTAGTA ===56thpattern: length = 10  470: CCAGATCTGA 9555: CCAGATCTGA 6611: AAGTGCACTG===57th pattern: length = 10  182: AAAGGAGAGA 9267: AAAGGAGAGA 6674:AAAGGAGAGA ===58th pattern: length = 10 6070: ATACCAATAG 6639:ATACCAATAG 6767: ATACCAATAG ===59th pattern: length = 11  418:ATCCTGCATAT 9503: ATCCTGCATAT 6787: TACCAGCTATA ===60th pattern: length= 10  419: TCCTGCATAT 9504: TCCTGCATAT 6788: ACCAGCTATA ===61st pattern:length = 11  121: GACCTTTGGAT 9206: GACCTTTGGAT 6837: GTCCAAAGGTA===62nd pattern: length = 10  587: CTAGAGATCC 9672: CTAGAGATCC 6963:GTACACATGG ===63rd pattern: length = 10  153: TTGAGCCAGA 7052:TTCACGGACA 9238: TTGAGCCAGA ===64th pattern: length = 10   10:AATTCACTCC 9095: AATTCACTCC 7843: GGCCAGACAA ===65th pattern: length= 10  356: TCCGCTGGGG 9441: TCCGCTGGGG 8310: GAATAGTTTT ===66th pattern:length = 10 6348: TACCTGTGTG 7148: ATCCAGAGAG 8532: GCTTGAGAGA ===67thpattern: length = 10 7965: TGGCTGTGGA 8542: CTTACTCTTG 8920: CAATCACAAG===68th pattern: length = 10  115: TCCACTGACC 9200: TCCACTGACC 8630:TGGAGTCAGG ===69th pattern: length = 10  550: AAGTAGTGTG 9635:AAGTAGTGTG 8816: AAGTAGTGTG ===70th pattern: length = 10  188:GAGAACACCA 9273: GAGAACACCA 8974: CACAAGAGGA ===71st pattern: length= 10 8422: AGAAGAAGAA 8979: GAGGAGGAGG 8982: GAGGAGGAGG ===72nd pattern:length = 11  611: GTCAGTGTGGA 9696: GTCAGTGTGGA 9001: CAGTCACACCT===73rd pattern: length = 10  612: TCAGTGTGGA 9697: TCAGTGTGGA 9002:AGTCACACCT

Of the 73 patterns that were found in the course of the application ofthe first embodiment, 22 patterns were repetitive patterns, whichgenerally were found to have a common suffix tree, while the remaining51 patterns were patterns that it was doubtful would have beendiscovered had the present invention not been employed.

Second Embodiment

Using the same arrays as those used for the first embodiment, thepresent inventor employed the present invention to conduct an experimentin which a search was conducted for all the patterns that had a lengthof at least 8 and that appeared at least 7 times. The search results areshown below.

===1st pattern: length = 8   54: ACCACACA 9139: ACCACACA  780: AGGAGAGA 184: AGGAGAGA 9269: AGGAGAGA 6121: GTTGTGTG  569: GTTGTGTG 9654:GTTGTGTG 2166: GAAGAGAG 6676: AGGAGAGA ===2nd pattern: length = 8   58:CACACAAG 9143: CACACAAG 1472: GAGAGAAC 6352: TGTGTGGA  186: GAGAGAAC9271: GAGAGAAC 5324: CACACAAG ===3rd pattern: length = 8   91: CACACCAG9176: CACACCAG  160: AGAGAAGT 6124: GTGTGGTC 7153: GAGAGGAC  242:AGAGAAGT 9327: AGAGAAGT 3193: CACACCAG 7385: ACACAACT ===4th pattern:length = 8   71: TTCCCTGA 9156: TTCCCTGA  261: GGTTTGAC 9346: GGTTTGAC 347: AAGGGACT 9432: AAGGGACT 5280: TTGGGTCA ===5th pattern: length = 8  99: GGCCAGGG 2119: GGCCAGGG  383: GGCCTGGG 9468: GGCCTGGG  853:GGCCAGGG 4885: AATTCAAA 9184: GGCCAGGG ===6th pattern: length = 8  296:CGAGAGCT 9381: CGAGAGCT  588: TAGAGATC 9673: TAGAGATC 6964: TACACATG 624: ATCTCTAG 9709: ATCTCTAG ===7th pattern: length = 8  508: ACCCACTG9593: ACCCACTG  594: TCCCTCAG 9679: TCCCTCAG 3699: GAAAGACT 5287:AGGGAGTV 2250: TCCCTCAG ===8th pattern: length = 8  411: CCCTCAGA 9496:CCCTCAGA  595: CCCTCAGA 9680: CCCTCAGA 2204: CCCTCAGA 3700: AAAGACTC5288: GGGAGTCT ===9th pattern: length = 8   56: CACACA 9141: VSVSVSVS 239: GAGAGAGA 9324: GAGAGAGA  782: GAGAGAGA 8436: GAGAGAGA 8437:AGAGAGAG 8438: GAGAGAGA ===10th pattern: length = 8  227: ATGGATGA 9312:ATGGATGA  700: GCTTGCTG 1532: ATGGATGA  897: GCAAGCAG 1136: GCAAGCAG3098: ATGGATGA ===11th pattern: length = 8  630: AGCAGTGG  946: CATCAGAA1535: GATGACAA 7887: TGCTGAGG 3209: CATCAGAA 7756: AGCAGTGG 6004:CATCAGAA ===12th pattern: length = 8  398: GGGGAGTG 9483: GGGGAGTG 1070:AAAAGACA 3462: AAAACAGA 6591: CCCCACTC 2743: AAAAGACA 3292: AAAAGACA5044: AAAACAGA 7249: AAAACAGA ===13th pattern: length = 8  786: GAGATGGG1106: AGAGCAAA 6256: GAGATGGG 6268: GAGATGGG 7226: AGAGCAAA 2832:CACATCCC 5205: CACATCCC ===14th pattern: length = 8  863: AAAGAAAA 2851:AAAGAAAA 2737: AAAGAAAA 6167: AAAGAAAA 1112: AAACAAAA 3065: AAACAAAA4526: TTTCTTTT 4702: AAAGAAAA 4785: AAAGAAAA 9069: AAAGAAAA ===15thpattern: length = 8  865: AGAAAAAA 2632: AGAAAAAA 2853: AGAAAAAA 1123:AGAAAAAA 2739: AGAAAAAA 3201: ACAAAAAA 7747: AGAAAAAA 1359: GTGGGGGG===16th pattern: length = 8 1258: AAGTAGTA 8868: CCAGCAGC 1502: AACTACTA6047: AAGTAGTA 6296: TTGATGAT 8715: AAGTAGTA 6471: AAGTAGTA 7683:AAGTAGTA ===17th pattern: length = 8  294: CCCGAGAG 9379: CCCGAGAG  622:AAATCTCT 9707: AAATCTCT 1665: TTTAGAGA 8072: AAATCTCT 1983: GGGCACAC===18th pattern: length = 8  756: AAATTTTG 1787: TTTAAAAG 2005: GGGCCCCT4891: AAATTTTC 2542: AAATTTTC 4781: TTTAAAAG 9065: TTTAAAAG 7246:TTTAAAAC ===19th pattern: length = 8  259: GAGGTTTG 9344: GAGGTTTG  345:ACAAGGGA 9430: ACAAGGGA 2035: GTGGAAAG 2110: ACAAGGGA 3841: AGAACCCA7970: GTGGAAAG ===20th pattern: length = 8  566: TCTGTTGT 9651: TCTGTTGT2191: AGACAACA 3434: ACAGAAGA 2627: ACAGAAGA 3164: AGACAACA 7734:GAGTGGTG ===21st pattern: length = 8  169: AGAAGAAG 3436: AGAAGAAG 2193:ACAACAAC 7021: AGAAGAAG 7635: GAGGAGGA 8422: AGAAGAAG 8979: GAGGAGGA8982: GAGGAGGA 8425: AGAAGAAG ===22nd pattern: length = 8 1358: AGTGGGGG3200: GACAAAAA 2199: ACTCCCCC 3288: CAGAAAAA 3040: GACAAAAA 6315:CAGAAAAA 3936: GACAAAAA 5378: CTGTTTTT ===23rd pattern: length = 8 1915:TAATGATG 2476: ATTAGTAG 2647: ATTAGTAG 2767: ATTAGTAG 3634: TAATGATG7220: ATTAGTAG 6093: ATTAGTAG ===24th pattern: length = 8 1124: GAAAAAAG4792: AGGGGGGA 4801: TGGGGGGT 2740: GAAAAAAG 3202: CAAAAAAC 7748:GAAAAAAG 9076: AGGGGGGA ===25th pattern: length = 8 2036: TGGAAAGG 2111:CAAGGGAA 3005: TGGAAAGG 8775: TGGAAAGG 4931: TGGAAAGG 2111: CAAGGGAA4955: TGGAAAGG 7781: CTTGGGTT ===26th pattern: length = 8  864: AAGAAAAA2631: AAGAAAAA 2852: AAGAAAAA 1122: AAGAAAAA 2738: AAGAAAAA 3145:AACAAAAA 6168: AAGAAAAA 7132: AAGAAAAA ===27th pattern: length = 8 2128:ATTTTCTT 2157: GCCCCACC 3477: TAAAAGAA 3642: TAAAACAA 7291: TAAAACAA4524: ATTTTCTT 4783: TAAAAGAA 9067: TAAAAGAA 7482: TAAAACAA 7529:GCCCCTCC ===28th pattern: length = 8  373: AGGGAGGC 9458: AGGGAGGC 4820:GAAAGAAT 6733: GAAAGAAT 3793: GTTTGTTA 8797: TGGGTGGC 8847: GAAAGAAT===29th pattern: length = 8 1111: AAAACAAA 2850: AAAAGAAA 3064: AAAACAAA4525: TTTTCTTT 4784: AAAAGAAA 9068: AAAAGAAA 3804: CCCCTCCC 4327:AAAAGAAA 4870: AAAACAAA 7483: AAAACAAA 7530: CCCCTCCC 8587: GGGGTGGG===30th pattern: length = 8  587: CTAGAGAT 9672: CTAGAGAT 6963: GTACACAT4422: GTACACAT 6576: CATGTGTA 5202: GTACACAT 5467: GATCTCTA ===31stpattern: length = 8  282: TTCATCAC  550: AAGTAGTG 9635: AAGTAGTG 8816:AAGTAGTG 4496: CCAGCAGA 5001: AAGTAGTG 9367: TTCATCAC ===32nd pattern:length = 8  755: AAAATTTT 1786: TTTTAAAA 4890: AAAATTTT 4780: TTTTAAAA9064: TTTTAAAA 4530: TTTTAAAA 6495: AAAATTTT ===33rd pattern: length = 8 374: GGGAGGCG 9459: GGGAGGCG 4560: AAACAATA 4821: AAAGAATA 8644:AAAGAATA 6734: AAAGAATA 7293: AAACAATA ===34th pattern: length = 8 1324:CCACCCCA 8181: AAGAAAAG 4786: AAGAAAAG 9070: AAGAAAAG 7358: GGAGGGGA5014: AAGAAAAG 7319: GGAGGGGA ===35th pattern: length = 8 2788: TAATAAGA5497: TAATAACA 6870: ATTATTGT 5233: TAATAACA 5736: TAATAAGA 6910:TAATAAGA 7852: ATTATTGT ===36th pattern: length = 8 6368: ACCACCAC 7022:GAAGAAGA 7636: AGGAGGAG 7120: CAACAACA 8423: GAAGAAGA 8980: AGGAGGAG8983: AGGAGGAG ===37th pattern: length = 8   84: AGAACTAC 9169: AGAACTAC4186: ACAAGTAG 4384: ACAAGTAG 5327: ACAAGTAG 7556: TGTTCATC 8925:ACAAGTAG

Third Embodiment

The following are arrays (access number: SA16SRRNA, length: 1334) forthe 16S portion of Streptococcus anginosus bacteria.

gaacgggtgagtaacgcgtaggtaacctgcctattagagggggataactattggaaacgatagctaataccgcataacagtatgtaacacatgttagatgcttgaaagatgcaattgcatcgctagtagatggacctgcgttgtattagctagtaggtagggtaaaggcctacctaggcactcctacgggaggcagcagtagggaatcttcggcaatggggggaaccctgaccgagcaacgccgcgtgagtgaagaaggttttcggatcgtaaagctctgttgttaaggaagaacgagtgtgagaatggaaagttcatactgtgacggtacttaaccagaaagggacggctnactacgtgccagcagccgcggtaatacgtaggtcccnagcgttgtccggatttattgggcgtaaagcgagcgcaggcggttagaaaagtctgaagtgaaaggcagtggctcaaccattgtaggctttggaaactgtttaacttgagtgcagaaggggagagtggaattccatgtgtagcggtgaaatgcgtagatatatggaggaacaccggtggcgaaagcggctctctggtctgtaactgacgctgaggctcgaaagcgtggggagcgaacaggattagataccctngtagtccacgccgtaaacgatgagtgctaggtgttgggtcctttccgggactcagtgccgcagctaacgcattaagcactccgcctggggagtacgaccgcaaggttgaaactcaaaggaattgacgggggccgcacaagcggtggagcatgtngtttaattcgaagnaacgcgaagaaccttaccaggtcttgacatcccgatgctntttctagagataggaagtttcttcggaacatcggtgacaggtggtgaatggttgtcgtcagctcgtgtcgtgagatgttgggttaagtcccgcaacgagcgcaaccctnattgttagttgccatcattaagttgggcactctagcgagactgccggtaatnaaccggaggaaggtggggatgacgtcaaatcatcatgccccttatgacctnggctacacacgtgctacaatggctggtacaacgagtcgcaagccggtgacggcaagctaatctctgaaagccagtctcagttcggattgtaggctgcaactcgcctncatgaagtcggaatcgctagtaatcgcggatcagcacgccgcggtgaatacgttcccgggccttgtacacaccgcncgtcacaccacgagagtttgtaacacccga

For the above arrays, the present inventor employed the presentinvention to conduct an experiment in which a search was conducted forall the patterns that had a length of at least 10 and that appeared atleast two times. The search results are shown below. Since the arrayssearched for in the third embodiment were shorter than those in thefirst or the second embodiment, a reduced number of patterns were found.

===1st pattern: length = 10  131: GGACCTGCGT  370“ AAGTTCATAC ===2ndpattern: length = 10   97: ATGCTTGAAA  438: CGTAGGTCCC ===3rd pattern:length = 11  280: GGGAACCCTGA  536: TTTGGAAACTG ===4th pattern: length= 10   29: CCTATTAGAG  630: AAGCGGCTCT ===5th pattern: length = 10  739:TCCTTTCCGG  985: GTTGGGTTAA ===6th pattern: length = 10  527: ATTGTAGGCT1206: ATTGTAGGCT ===7th pattern: length = 10  118: ATCGCTAGTA 1240:ATCGCTAGTA

As is described above, according to the present invention, for avariable in a target array that can be replaced by another element inthe array, information is substituted that indicates the location of adifferent variable that forms a complementary pair with the variablethat can be replaced, or, for a variable in the target array for whichno different, complementary variable is available, information issubstituted indicating that no such variable is available. Since tochange an array this process is performed for all the variables therein,the present invention can provide an excellent effect by so altering anarray that its structure can be efficiently analyzed.

Further, according to the present invention, for a variable in a targetarray that can be replaced by another element, information issubstituted that indicates the location of a like variable, or, for avariable in the target array for which a like variable is not available,information is substituted indicating that no like variable is availablein order to change the target array into a first array.

Furthermore, for a variable in a target array that can be replaced byanother element, information is substituted that indicates the locationof a different variable that forms a complementary pair with thevariable that can be replaced, or, for a variable in the target arrayfor which a different, complementary variable is not available,information is substituted indicating that no such variable is availablein order to change the target array into a second array. Then, since thefirst and the second arrays are employed to analyze the structure of thetarget array, the present invention can provide an excellent effectwhereby the structure of the target array can be efficiently analyzed.

While the invention has been particularly shown and described withrespect to preferred embodiments thereof, it will be understood by thoseskilled in the art that the foregoing and other changes in form anddetails may be made therein without departing form the spirit and scopeof the invention.

1. A method for changing an array comprising the steps of: changing avariable in a target array to information that represents the locationof a different variable when said target array, consisting of acombination of a plurality of various kinds of elements is viewed alonga path extending in a predetermined direction, and when a different,complementary variable is present upstream of a variable included insaid target array; changing said variable to information indicating thatno different, complementary variable is present when no different,complementary variable is present upstream of said variable in saidtarget array; and repeating said steps for all the other variablesincluded in said target array, so that said target array is changed. 2.(canceled)
 3. The method according to claim 2, wherein a single suffixtree is prepared while said first and said second arrays are regarded asa single pair of corresponding character strings; wherein, from amongsequences of said first and said second arrays, which are provided aslabels for edges of said single suffix tree, information that indicatesthe location of said same variable or said different variable that isnot present in each of said sequences is replaced with information thatindicates the absence of said same variable or said different variable;and wherein said suffix tree is employed to analyze the structure ofsaid target array.
 4. The method according to claim 2, wherein saidtarget array is changed to said first and said second arrays by using,as information that indicates the position of the different variable orthe position of said same variable, numerical information thatrepresents the number of elements arranged in said target arraybeginning at the position of a target variable and continuing up to theposition of said same variable, or said different variable; wherein, forsaid first and said second thus obtained arrays, all of said informationindicating that said different variable or said same variable is notpresent in said target array is replaced with numerical information,obtained by inverting the positive and negative signs of said numericalinformation, indicating the number of elements that are present inanother array at locations corresponding to said information; wherein asuffix tree is prepared by regarding the obtained array as a characterstring; and wherein, among the sequences of said obtained array that areprovided as labels for edges of said suffix tree, numerical informationindicating the positioning of said same variable or said differentvariable that is not present in each of said sequences is replaced withinformation indicating that said same variable or said differentvariable is not present; and wherein said suffix tree is employed toanalyze the structure of said target array.
 5. The method according toclaim 3, wherein said suffix tree is employed to extract a sequence thathas the same structure and that frequently appears in said target array,so that said structure of said target array is analyzed.
 6. The methodaccording to claim 4, wherein said suffix tree is employed to extract asequence that has the same structure and that frequently appears in saidtarget array, so that said structure of said target array is analyzed.7. The method according to claim 3, wherein said target array is anarray where said first target array, first identification information,said second target array, first identification information, said secondtarget array and second identification information are arranged inorder; and wherein, when said suffix tree is employed to search for saidcommon sequence for said first and said second arrays, said structuresof said first array and said second array are analyzed.
 8. The methodaccording to claim 4, wherein said target array is an array where saidfirst target array, first identification information, said second targetarray, first identification information, said second target array andsecond identification information are arranged in order; and wherein,when said suffix tree is employed to search for said common sequence forsaid first and said second arrays, said structures of said first arrayand said second array are analyzed.
 9. An apparatus for analyzing thestructure of an array comprising: first conversion means for convertinga target array consisting of a combination of a plurality of differentkinds of elements into a first array by changing a variable that isreplaceable with another element in said target array into informationrepresenting the location of the same variable when said target array isviewed along a path extending in a predetermined direction, and whensaid same variable is present upstream of said variable, and bychanging, when said same variable is not present upstream of saidreplaceable variable in said target array, all the variables in saidtarget array into information indicating that said same variable is notpresent; second conversion means for changing said target array into asecond array by changing a replaceable variable in a target array intoinformation representing the location of the different variable whensaid target array is viewed along a path extending in a predetermineddirection, and when a different variable that is complementary ispresent upstream of said replaceable variable and by changing, when saiddifferent variable is not present upstream of said replaceable variablein said target array, all the variables in said target array intoinformation indicating that said different variable is not present; andanalyzation means for employing said first and said second arrays toanalyze the structure of said target array.
 10. A storage medium onwhich a program is stored to permit a computer to perform processingcomprising: a step of converting a target array consisting of acombination of a plurality of different kinds of elements into a firstarray by changing a variable that is replaceable with another element insaid target array into information representing the location of the samevariable when said target array is viewed along a path extending in apredetermined direction, and when said same variable is present upstreamof said variable, and by changing, when said same variable is notpresent upstream of said replaceable variable in said target array, allthe variables in said target array into information indicating that saidsame variable is not present; a second step of changing said targetarray into a second array by changing a replaceable variable in a targetarray into information representing the location of the differentvariable when said target array is viewed along a path extending in apredetermined direction, and when a different variable that iscomplementary is present upstream of said replaceable variable, and bychanging, when said different variable is not present upstream of saidreplaceable variable in said target array, all the variables in saidtarget array into information indicating that said different variable isnot present; and a third step of employing said first and said secondarrays to analyze the structure of said target array.
 11. A transmissionmedium for transmitting a program to permit a computer to performprocessing comprising: a step of converting a target array consisting ofa combination of a plurality of different kinds of elements into a firstarray by changing a variable that is replaceable with another element insaid target array into information representing the location of the samevariable when said target array is viewed along a path extending in apredetermined direction, and when said same variable is present upstreamof said variable, and by changing, when said same variable is notpresent upstream of said replaceable variable in said target array, allthe variables in said target array into information indicating that saidsame variable is not present; a second step of changing said targetarray into a second array by changing a replaceable variable in a targetarray into information representing the location of the same variablewhen said target array is viewed along a path extending in apredetermined direction, and when a different variable that iscomplementary is present upstream of said replaceable variable, and bychanging, when said different variable is not present upstream of saidreplaceable variable in said target array, all the variables in saidtarget array into information indicating that said different variable isnot present; and a third step of employing said first and said secondarrays to analyze the structure of said target array.